java双冒号写法(Lambda的简写)

类似这种 Person::getName,双冒号写法,是Java8对Lambda表达式的简写

常见的简写场景有

以下是Java 8中方法引用的一些语法:

静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
对象的实例方法引用语法:instance::methodname 例如:System.out::println
对象的超类方法引用语法: super::methodname
类构造器引用语法: classname::new 例如:ArrayList::new
数组构造器引用语法: typename[]::new 例如: String[]:new

注意:若Lamdba参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method (类::实例方法)


常见使用场景举例

复制代码
String::valueOf         //x -> String.valueOf(x)

Object::toString        //x -> x.toString()

x::toString             //() => x.toString()

ArrayList::new          //() => new ArrayList<>()
 
Math::abs               //n -> Math.abs(n)

marry(this::buyHouse)   //marry(() -> this.buyHouse())

int[]::new              //length -> new int[length]

Stream.of(1, 2, 3, 4, 5, 6).min(Integer::compareTo)  //Stream.of(1, 2, 3, 4, 5, 6).min((a,b) -> a.compareTo(b))

//循环中使用
list.forEach(System.out::println);

list.forEach(new Demo()::print);

list.forEach(Demo::print);
复制代码

 

posted @   全玉  阅读(316)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-07-05 TCP的拥塞控制
2018-07-05 transitionEnd和animationEnd的一个临时解决方案
2017-07-05 css3动画总结
点击右上角即可分享
微信分享提示