栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java8双冒号(::)的使用(方法引用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java8双冒号(::)的使用(方法引用)

1.语法分析:

双冒号 :: 为引⽤运算符,⽽它所在的表达式被称为⽅法引⽤。如果 Lambda 要表达的函数⽅案已经存在于某个⽅法 的实现中,那么则可以通过双冒号来引⽤该⽅法作为Lambda 的替代者。 下⾯两种写法的执⾏效果完全⼀样,⽽⽅法⼆⽅法引⽤的写法复⽤了已有⽅案,更加简洁。 ⽅法⼀ :Lambda 表达式: s -> System.out.println(s); 拿到参数之后经 Lambda 之⼿,继⽽传递给 System.out.println ⽅法去处理。 ⽅法⼆ : ⽅法引⽤: System.out::println 直接让 System.out 中的 println ⽅法来取代 Lambda 2.方法引用的语法 ( 1 )对象的引⽤ :: 实例⽅法名 ( 2 )类名 :: 静态⽅法名 ( 3 )类名 :: 实例⽅法名 ( 4 )类名 :: new ( 构造器引⽤ ) 3.举例
public static void main(String[] args) {

 Arrays.asList("a","b","c").forEach(new Consumer() {
 @Override
 public void accept(String s) {
     System.out.println(s);
 }
 });

 //对象的引⽤ :: 实例⽅法名
 Arrays.asList("a","b","c").forEach(s->System.out.println(s)); // 前
 Arrays.asList("a","b","c").forEach(System.out::println); // 后
Supplier sup = new Supplier() {
 @Override
 public Double get() {
     return Math.random();
 }
 };
 
 //类名 :: 静态⽅法名
 Supplier supp = ()->Math.random();// 前
 Supplier suppp = Math::random;// 后
 System.out.println(suppp.get());
Function fun = new Function() {

 @Override
 public String apply(Product product) {
     return product.getName();
 }
 };

 //类名 :: 实例⽅法名
 Function funn = (p)->p.getName(); // 前
 Function funnn = Product::getName; // 后
 String productName = funnn.apply(new Product(2L,"⼩⽶⼿机",3200d));
 System.out.println("productName = " + productName);
Supplier snew = new Supplier() {
 @Override
 public Product get() {
     return new Product();
 }
 };

 //类名 :: new (构造器引⽤)
 Supplier snew1 = ()->new Product(); // 前
 Supplier snew2 = Product::new; // 后
 System.out.println(snew2.get());

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号