首页 > 编程语言 >java8interface的新特性:default,static,funcation

java8interface的新特性:default,static,funcation

时间:2024-07-24 15:42:51浏览次数:14  
标签:funcation default void 接口 static interface public

default:默认方法

在类接口中可以直接定义的方法,实现接口的类可以直接使用

使用案例:

public interface MyInterface {  
    default void display() {  
        System.out.println("This is default method.");  
    }  
}  

说明:被default修饰的方法可以不被子类实现。即在不破坏现有代码的情况下,可以向接口中添加新方法。

这样的设计理念体现了适配器模式:target在适配原有的adaptee的情况下,可以添加新的adaptee

除此之外还解决了多继承问题:类可以实现多个接口,当多个接口存在相同签名的默认方法时,实现类可以指定实现哪一个接口的默认方法或声明自己实现

 

static:静态方法

可以直接通过接口名调用,不能通过接口的实现对类/接口的对象调用,不能被继承与覆盖

使用案例:

public interface MyInterface {  
    static void showStaticMessage() {  
        System.out.println("This is a static method in interface.");  
    }  
}  
  
public class Test {  
    public static void main(String[] args) {  
        MyInterface.showStaticMessage(); // 直接通过接口名调用静态方法  
    }  
}

可以作为辅助方法,实现一些辅助功能,不依赖于接口的状态与实例

 

functional interfaces:函数式接口

只包含了一个抽象方法的接口,可以使用lambda匿名实现

@FunctionalInterface  //不是必须的,添加此注解后会被指为函数式接口,如果接口不符合定义(包含多于一个抽象方法)编译器会报错。但是即使没有这个注解,只要接口满足条件他就可以作为函数式接口使用
public interface MyFunctionalInterface {  
    void doSomething();  
}  
  
public class Test {  
    public static void main(String[] args) {  
        MyFunctionalInterface mfi = () -> System.out.println("Hello, functional interface!");  //实现接口
        mfi.doSomething();  //调用接口的方法
    }  
}

 

标签:funcation,default,void,接口,static,interface,public
From: https://www.cnblogs.com/kun1790051360/p/18319911

相关文章

  • [error] [default] Error sending telemetry FetchError: The pending stream has bee
    我在VSCode使用GithubCopilot时遇到了一个问题。报错信息如下:[error][default]ErrorsendingtelemetryFetchError:Thependingstreamhasbeencanceled(causedby:unabletoverifythefirstcertificate)具体信息:2024-07-2317:44:56.712[error][default]Erro......
  • PHP中static的使用
    本文由ChatMoney团队出品PHP,作为一种面向对象的编程语言,为开发者提供了丰富的特性和功能,助力构建高效的应用程序。其中,static关键字在类和方法中的应用尤为重要,它提供了一种独特的变量和方法访问机制。本文将深入探讨static关键字的使用方法,并通过具体代码示例来指导实践。一......
  • 封装 static静态关键字 可变参数 递归
    一.封装1.this1.当成员变量和局部变量重名时,调用遵循"就近原则",先调用局部的2.this代表的是当前对象,哪个对象调用this所在的方法,this就代表哪个对象3.作用:区分重名的成员变量和局部变量(this后面肯定是成员的)publicclassPerson{Stringname;/**......
  • rabbitmq发送消息localdatetime报错:Java 8 date/time type `java.time.LocalDateTime`
    两种解决方案:通过全局配置LocalDateTime的序列化/***json序列化增强解决Jackson序列化不了Java8日期*/@BeanpublicMessageConvertermessageConverter(){ObjectMapperom=newObjectMapper();om.setVisibility(PropertyAccessor.ALL,JsonAut......
  • Java学习日历(static,工具类,继承)
    staticstatic表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。特点:被该类所有对象共享不属于对象,属于类随着类的加载而加载,优先于对象存在调用方式:类名调用(推荐)对象名调用工具类帮助我们做一些事情的,但是不描述任何事物的类类名见名知意私有化构造方法......
  • java项目(knife4j使用,静态资源未放在static资源包下,公共字段自动填充,Spring Cache与Spr
    Knife4j(生成接口文档)使用swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:https://swagger.io/Knife4j是为JavaMVC框架集成Swagger生成Api文档的增强解决方案。使用方式1、导入knife4j的maven坐标<dependency>......
  • c++中static_cast的用法
    在C++中,`static_cast`是一种用于执行静态类型转换的运算符。它用于在编译时进行类型转换,包括隐式和显式类型转换,但不能用于转换具有无关类型的指针。`static_cast`可以用于以下情况:1.隐式类型转换:`static_cast`可以在不丢失信息的情况下执行隐式类型转换,例如将整数类型......
  • Java中interface的default和static方法
    Java中interface的default和static方法Java中interface的default和static方法完整代码及其运行结果从Java8开始:static方法:接口不能通过实例调用static方法接口中的static方法不能被继承子类不能继承接口的static方法,可以继承、不能覆写父类的static方法。default......
  • jpa报错 Failed to initialize JPA EntityManagerFactory: Unable to instantiate de
    报错2024-07-1711:18:57.558[][main]o.h.dialect.Dialect:HHH000400:Usingdialect:org.hibernate.dialect.MySQL5InnoDBDialect2024-07-1711:18:57.729[][main]tyManagerFactoryBean:FailedtoinitializeJPAEntityManagerFactory:......
  • vue3 widthDefaults 设置props默认值
    测试代码<template><divclass="box"><div><i-ep-edit/></div><div><i-ep-chat-dot-round/></div><div><i-ep-close/></div></div></template><scriptl......