public class Test {
protected interface FunctionEx {
void execute(String a);
default void defaultMethod() {
System.out.println("FunctionEx default executed!");
}
}
public String saySomething(String a) {
System.out.println("say :" + a);
// 当前FunctionEx.execute返回void,saySomething有返回值不影响方法引用,
// 当FunctionEx.execute有返回值,则saySomething返回值类型必须与之相同,
// 否则不能引用
return "";
}
public void doTest(String a, FunctionEx functionEx) {
System.out.print("doTest ");
functionEx.execute(a);
}
public void doTest2(String a) {
doTest(a, this::saySomething);
doTest(a, n -> this.saySomething(n)); // 此处this可省略
doTest(a, n -> saySomething(n));
doTest(a, new FunctionEx() {
@Override
public void execute(String a) {
// this.saySomething(a);
// 匿名内部类的this指向匿名内部类,所以此处不能用this.saySomething
// lambda的this指针指向的是包围lambda表达式的类
saySomething(a);
}
});
}
public static void main(String[] args) {
String str = "hello";
Test test = new Test();
test.doTest(str, n -> test.saySomething(n));
test.doTest(str, test::saySomething); // 方法引用的方式可以简化lambda表达式的写法
// 可使用方法引用的前提:lambda的主体仅包含一个表达式,且该表达式仅调用了一个已经存在的方法。
test.doTest(str, n -> {
test.saySomething(n);
// defaultMethod(); // lambda表达式不能调用接口中的默认方法
});
test.doTest(str, new FunctionEx() {
@Override
public void execute(String a) {
test.saySomething(a);
defaultMethod();// 匿名类实现的抽象方法允许调用接口中的默认方法
}
});
System.out.println("doTest2 start");
test.doTest2(str);
}
}
分享到:
相关推荐
4、函数式接口使用:学习如何使用Lambda表达式与Java中的函数式接口进行交互,包括传递函数、使用函数式接口的默认方法和方法引用。 本源码资源旨在帮助用户掌握以下几个方面: 1、Lambda表达式概述:了解Lambda...
2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来。或许现在你已经在使用Lambda表达式来书写简洁灵活的代码。比如,你可以使用Lambda表达式和新增的流相关的API,完成如下的大量数据的查询处理: ...
该笔记主要记录了学习Java8新增特性的全部信息,包含概念讲解及代码示例,主要针对Lambda表达式、函数式接口、方法引用及构造器引用、Stream API、Optional类几个模块深入浅出的介绍了各个模块的使用。希望对大家的...
Java 8 简明教程 Java 8 Tutorial中文版 “Java并没有没落,人们很快就...达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的 了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。
java8流源码java8 Java 8 示例 对于 Java 编程,Java SE 8 提供了大量功能。 他们之中有一些是 Lambda 表达式- 为 Java 添加函数处理能力。 方法引用- 通过名称引用函数而不是直接调用它们。 使用函数作为参数。 ...
java8流源码Java 8 新特性实践 Java 8 于 2014 年 3 月 18 日发布。它是 Java 软件开发平台的革命性版本。 它包括对 Java 编程、JVM、工具和库的各种升级。 Java 8 是 Java 历史上功能最丰富的版本之一。 Java 8 ...
这是一个简单的hello world应用程序,具有以下修改: build.xml和属性文件中对source 1.5和target 1.5所有引用已更改为1.8 。 它包含一个构建提示java.version=8 。 已对lib/CLDC11.jar文件进行了修补,以包括一些...
示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后, 你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等
接口:从jdk8开始,接口可以定义为函数式接口,并新增了两种类型的方法,【静态方法和默认方法】打破了接口以前的定义“实现这个接口就一定要实现接口中的所有方法”,具体请看示例。 Stream API:新添加的Stream ...
通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的 了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等...
, 彻底覆盖Java SE 8的主要改进,包括lambda表达式、方法引用、缺省方法等。, 充分解决如何提升JAVA语言中最流行的特性之一——注解的效用。, 包含宝贵的见解,区分JAVA的正式规则和真实的编译器行为。, 对每一个...
Chock充满了演示如何充分利用现代Java API和开发最佳实践的示例,这本经过全面修订的书籍包含有关Java Concurrency Utilities的新资料。 本书的第一部分提供了Java编程语言和Java平台的核心运行时方面的快节奏,...
java8 源码 JAVA8实用范例 抛砖引玉!写出更简洁优美的代码 简介 自java5以来最大的版本变动 很大程度增强java类库 主要目标 更高的开发效率 更高代码可用性 更好的利用多核和多处理器系统 Lambda表达式 函数式接口:...
通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。
在简短的代码示例的支持下,您将学习如何使用默认接口方法、lambda 表达式、方法引用和可重复注释。 在文章的最后,您将熟悉最新的变化,如流、功能接口、地图扩展和新的 Date API。 没有文字墙,只有一堆带注释的...
Java8用默认方法与静态方法这两个新概念扩展接口的声明 默认方法:允许在已有的接口中添加新方法,而同时又保持了与旧版本代码的兼容性。默认方法与抽象方法不同之 处在于抽象方法必须要求实现,但默认方法没有这样...
在简短的代码示例的支持下,您将学习如何使用默认接口方法、lambda 表达式、方法引用和可重复注释。在本文末尾,您将熟悉最新的API更改,例如流、功能接口、地图扩展和新的 Date API。没有文字墙,只有一堆带注释的...
java8 看不到源码spring5-reactive ...这是一个示例应用程序,用于构建响应式服务的服务器和客户端示例。 克隆存储库并运行主类。 构建并启动应用程序。 cd spring5-reactive mvn clean spring-boot:run