博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA8方法引用
阅读量:5128 次
发布时间:2019-06-13

本文共 2388 字,大约阅读时间需要 7 分钟。

方法引用:若Lambda方法体已经实现,我们可以使用方法引用 * 主要有三种语法格式: * 对象::实例方法名 * 类::实例方法名 * 类::静态方法名 * * 注意:Lambda体中调用的方法的参数列表与返回值类型,要与函数式中接口的抽象方法的参数列表和返回值类型一样 * * * 构造器引用: * 格式:ClassName::new * * * 数组引用: * Type :: new
package airycode_java8.nice5;import airycode_java8.nice1.Employee;import org.junit.Test;import java.io.PrintStream;import java.util.Comparator;import java.util.function.BiPredicate;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Supplier;/** * * 方法引用:若Lambda方法体已经实现,我们可以使用方法引用 * 主要有三种语法格式: * 对象::实例方法名 * 类::实例方法名 * 类::静态方法名 * * 注意:Lambda体中调用的方法的参数列表与返回值类型,要与函数式中接口的抽象方法的参数列表和返回值类型一样 * * * 构造器引用: * 格式:ClassName::new * * * 数组引用: * Type :: new * * * * * Created by admin on 2019/1/2. */public class TestMethodRef {    @Test    public void test1(){        PrintStream ps = System.out;        //Consumer
con = (x)-> ps::println; Consumer
consumer = (x)-> ps.println();// Consumer
consumer2 = ps::println; consumer.accept("aaa"); } @Test public void test2(){ Employee employee = new Employee(); Supplier
supplier = () -> employee.getName(); String str = supplier.get(); System.out.println(str); Supplier
supplier2 = employee::getAge; Integer age = supplier2.get(); System.out.println(age); } //静态方法 @Test public void test3(){ Comparator
comparator = (x,y)->Integer.compare(x,y); Comparator
comparator2 = Integer::compare;//方法引用 } //类::实例方法(规则:两个参数,第一个参数是调用方法的实例的调用者(x),第二个参数是实例方法(equals)的参数值(y)) @Test public void test4(){ BiPredicate
bp = (x,y)->x.equals(y); BiPredicate
bp2 = String::equals; } //构造器 @Test public void test5(){ Supplier
emp = ()->new Employee(); Supplier
emp2 = Employee::new; Employee employee = emp2.get(); System.out.println(employee); } //一个参数构造器 @Test public void test6(){ Function
fun = (x)->new Employee(x); Function
fun2 = Employee::new; Employee employee = fun2.apply(101); System.out.println(employee.getAge()); } //数组引用 @Test public void test7(){ Function
fun = (x)->new String[x]; String[] arr = fun.apply(10); System.out.println(arr.length); Function
fun2 = String[]::new; String[] arr2 = fun.apply(20); System.out.println(arr2.length); }}

  

转载于:https://www.cnblogs.com/airycode/p/10231627.html

你可能感兴趣的文章
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>
Android 画图之 Matrix(一)
查看>>
List<T>列表通用过滤模块设计
查看>>
【模板】最小生成树
查看>>