分享

lambda表达式

 一本正经地胡闹 2021-10-14

函数式接口

@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;

。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多