函数式接口
@FunctionalInterface
@FunctionalInterface
interface GreetingService
{
void sayMessage(String message);
}
GreetingService greetService1 = message -> System.out.println("Hello " + message);(JAVA 8 之前一般是用匿名类实现)
转自 https://www.runoob.com/java/java8-functional-interfaces.html
lambda表达式条件:函数式接口。
表达形式:() -> {},即,参数,箭头,方法体。
lambda是个匿名函数,所以不需要方法名,只需要写出方法体就行。
Predicate<Integer> predicate = n -> n>5;
Predicate<Integer> predicate = n -> n%2==0;
predicate.test(11);
2.方法引用
Predicate<Integer> predicate = n -> n%2==0;
一个程序里,很多地方写了类似这样的条件,碰到需求变更,需要一个一个去改。解决的方法:将条件写在一个方法里,集中在一起,方便改。
Predicate<Integer> predicate = n ->calculate(n);
private static boolean calculate(int n){
return n%2==0;
}
方法引用语法,方法的隶属类::方法名,
例如,将这些写了条件的方法,全部其中到一个类,CalculateGroup
public class CalculateGroup{
public static boolean calculate1(int n){
return n%2==0;
}
public static boolean calculate2(int n){
return n>0;
}
public static boolean calculate3(int n){
return n<5;
}
}
由这个表达Predicate<Integer> predicate = n ->calculate(n);可以换成以下表达(等价)
Predicate<Integer> predicate = CalculateGroup::calculate1;
。。。
联系客服