博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lambda表达式之方法引用
阅读量:5250 次
发布时间:2019-06-14

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

/** * 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。
* 与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。*@date:2018年7月9日*@author:zhangfs*/public class Car { public static Car create(final Supplier
supplier) { return supplier.get(); } public static void collide(final Car car) { System.out.println("Collided " + car.toString()); } public void follow(final Car another) { System.out.println("Following the " + another.toString()); } public void repair() { System.out.println("Repaired " + this.toString()); } /** * 构造器引用
* 语法是Class::new,或者更一般的Class< T >::new。请注意构造器没有参数 */ @Test public void constructorRef() { Car car=Car.create(Car::new); car.repair(); } /** * 类的静态方法引用
* 语法是Class::static_method。请注意这个方法接受一个Car类型的参数。 */ @Test public void staticMethodRef() { final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car );// Car::collide(); cars.forEach( Car::collide ); } /**类的方法引用
* 语法是Class::method。请注意,这个方法没有参数 */ @Test public void commonMethodRef() { final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car );// Car::collide(); cars.forEach( Car::repair ); } /** * 对象的方法引用
* 语法是instance::method。请注意,这个方法接受一个Car类型的参数 */ @Test public void objMethodRef() { final Car police = Car.create( Car::new ); final List< Car > cars = Arrays.asList( police ); cars.forEach( police::follow ); }}

 

转载于:https://www.cnblogs.com/zhangfengshi/p/9284638.html

你可能感兴趣的文章
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
海量数据存储
查看>>
js中的try/catch
查看>>
[导入]玫瑰丝巾!
查看>>
自动从网站上面下载文件 .NET把网站图片保存到本地
查看>>
【识记】 域名备案
查看>>
STL uva 11991
查看>>
MY SQL的下载和安装
查看>>
自定义OffMeshLink跳跃曲线
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
学习Redux之分析Redux核心代码分析
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>
CSS水平垂直居中总结
查看>>
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
gource 安装教程
查看>>
字符串转 Boolean 的正确方式
查看>>