lambda表达式之方法引用
/** * 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。<br> * 与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。 *@date:2018年7月9日 *@author:zhangfs */ public class Car { public static Car create(final Supplier<Car> 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()); } /** * 构造器引用<br> * 语法是Class::new,或者更一般的Class< T >::new。请注意构造器没有参数 */ @Test public void constructorRef() { Car car=Car.create(Car::new); car.repair(); } /** * 类的静态方法引用<br> * 语法是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 ); } /**类的方法引用<br> * 语法是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 ); } /** * 对象的方法引用<br> * 语法是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 ); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?