java8interface的新特性:default,static,funcation
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(); //调用接口的方法
}
}
java8interface的新特性:default,static,funcation的更多相关文章
- Java 8新特性——default方法(defender方法)介绍
我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码.接口中定义的方法必须在接口的非抽象子类中实现.下面就是关于接口的一个例子: 1 2 3 4 5 6 7 8 9 10 11 ...
- Java8 新特性default
在JDK1.8的Iterator接口中 package java.util; import java.util.function.Consumer; public interface Iterator ...
- JDK1.5新特性(二)……Static Import
援引 Static Import - This facility lets you avoid qualifying static members with class names without t ...
- jdk1.8新特性 : 接口中可以有普通方法(非静态方法)和静态方法 , 颠覆了之前我的理解 : 接口中只能有共有常量和抽象方法的概念,后面必须要加一句jdk1.7和1..7之前
看到jdk某些接口中存在default方法,于是... http://shaomeng95.iteye.com/blog/998820 为什么接口只能是公有常量? public interfac ...
- Java8新特性(一)_interface中的static方法和default方法
什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Colle ...
- java8新特性:interface中的static方法和default方法
java8中接口有两个新特性,一个是静态方法,一个是默认方法. static方法 java8中为接口新增了一项功能:定义一个或者多个静态方法. 定义用法和普通的static方法一样: public i ...
- JDK1.8新特性(一): 接口的默认方法default
前言 今天在学习mysql分区优化时,发现一个博客专家大神,对其发布的文章简单学习一下: 一:简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的 ...
- C++2.0新特性(三)——<=default,=delete、alias(别名)、noexcept、override、final、以及和const对比>
一.=default,=delete 1.首先我们要回顾一下类默认函数的概念: C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数: (1)构造函数(A()).(2)析 ...
- JDK1.5/1.6/1.7之新特性总结(转载)
原文地址:http://www.cnblogs.com/yezhenhan/archive/2011/08/16/2141510.html 如果原作者看到不想让我转载请私信我! 开发过程中接触到了从j ...
- Java 8新特性终极指南
目录结构 介绍 Java语言的新特性 2.1 Lambdas表达式与Functional接口 2.2 接口的默认与静态方法 2.3 方法引用 2.4 重复注解 2.5 更好的类型推测机制 2.6 扩展 ...
随机推荐
- 关于Zotero组件在office word中的添加
引言:学姐问我,怎么弄Zotero,在调试过程中遇到的问题及解决方案 Q&A Zotero的安装 找到官网(https://www.zotero.org/)点击download,安装(个人觉得 ...
- nginx002: NGINX的环境变量,基本命令参数,目录关系及gzip优化
NGINX的环境变量,基本命令参数,目录关系及gzip优化 添加环境变量 nginx命令执行方式 nginx [选项] [参数] 通过编译安装的nginx 默认是没有环境变量的,如何设置环境变量,让n ...
- Understanding Swift’s value type thread safety - 代码分析(一)
结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPe ...
- 7.18考试总结(NOIP模拟19)[u·v·w]
我们不是狼,我们只是长着獠牙的羊...... 前言 我真 TM 爱死 \(\frac{1}{4}\) 了. 老实说,这套题是真恶心,第一题还有一点思路,到了后面是一点都搞不定了. 总的来说,主要原因是 ...
- ncnn的blob_vkallocator、workspace_vkallocator、staging_vkallocator区别
ncnn::Extractor中有三个成员函数: void set_blob_vkallocator(VkAllocator* allocator); void set_workspace_vkall ...
- 使用 JavaScript 脚本来进行复杂的查询改写
有这么一个需求: 网关里怎样对跨集群搜索进行支持的呢?我想实现: 输入的搜索请求是 lp:9200/index1/_search 这个索引在 3 个集群上,需要跨集群检索,也就是网关能否改成 lp:9 ...
- EF,lambda 反向模糊查询
SELECT * FROM table as t WHERE "张三的偶像" LIKE t.userName; bool thisMchBelong = _mch_blackSer ...
- 未能加载文件或程序集“netstandard,Version=2.0.0.0, Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项 解决
未能加载文件或程序集"netstandard,Version=2.0.0.0, Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51"或它 ...
- MacOSX 运行Unity卡顿 [gethostname]
用MacbookPro 32G i7 独显 的高配打开项目发现异常卡顿, Win平台没有问题 打开Unity的Profiler DeepProfiler. 发现完全是卡在 dns.gethostnam ...
- python webdriver.remote远程创建火狐浏览器会话报错,Unable to create new service: GeckoDriverService
问题: 使用selenium.webdriver.remote,远程指定地址的浏览器,并创建会话对象:创建火狐浏览器会话时,报错,错误信息如下: Message: Unable to create n ...