双冒号(::)运算符 java

双冒号(::)

英文:double colon,双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。为此,方法引用需要有兼容的函数接口组成的目标类型上下文。

::关键字提供了可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,::关键字可以使语言更简洁,减少冗余代码。

方法引用(::)使用的前提条件:

1.满足lambda的相关条件,即:可以使用lambda表达式表示;
		- 只有一个抽象方法的接口
		- 情景上下文的推导
2.重写方法体里面大括号的语句
		1.只能有一条语句
 		2. 必须是调用方法的语句
 		3. 重写方法的参数必须传入到调用方法的参数里

语法 :
(比如有个Person类)


简单总结了一下,可能和官方不太一样
 	1. 类名::方法名;		
 		 		Person::getName
 	2. 对象::方法名;		
 	 			new Person()::getName
 	3. 类名::new  ||数组名::new 
 				Person::new || String[]::new

举例:

1.String str= "abcDeF";比较字符串中小写字母的个数;
  str.chars().filter(c->c>='a'&&c<='z').count();
  等价于:
  str.chars().filter(c->Character.isLowerCase(c)).count();
  等价于:
  str.chars().filter(Character::isLowerCase).count();
2. System.out返回一个printStream对象
List.of("a", "b", "c", "d").forEach(s -> System.out.println(s));
等价于:
List.of("a", "b", "c", "d").forEach(System.out::println);
Stream.of("a", "b", "c", "d").toArray(
                        new IntFunction<String[]>() {
                            @Override
                            public String[] apply(int value) {
                                return new String[value];
                            }
                        }
                );
  等价于:
   Stream.of("a", "b", "c", "d").toArray(s->new String[s]);
  等价于:
  Stream.of("a", "b", "c", "d").toArray(String[]::new);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值