在以下代码示例中,::
执行了什么操作:
public static void main(String[] args) {
List<Integer> l = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Integer s = l.stream().filter(Tests::isGT1)
.filter(Tests::isEven)
.map(Tests::doubleIt)
.findFirst()
.orElse(100);
System.out.println(s);
}
private static boolean isGT3(int number){
return number > 3;
}
private static boolean isEven(int number){
return number % 2 ==0;
}
private static int doubleIt(int number){
return number * 2;
}
答案 0 :(得分:40)
这些是method references。这只是编写lambda expression的简单方法:
.map(Tests::doubleIt)
相当于
.map(i -> Tests.doubleIt(i))
您还可以使用someObject::someMethod
引用实例方法,甚至使用SomeClass::new
引用构造函数。