博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lambda 表达式
阅读量:4325 次
发布时间:2019-06-06

本文共 2020 字,大约阅读时间需要 6 分钟。

package lambda;/** * Created by ding on 2018-3-22. * Lambda表达式的目的就是为了简化接口式的匿名内部类,要使用Lamdba表达式前提是接口中只有一个抽象方法,这个接口被叫做函数式接口 */public class LamdbaDemo {    public static void main(String[] args) {        //lambda 表达式语法        //好处是:1.代码简洁 2.不会产生实现类的class文件        IEat eat = ()->{System.out.println("eat orange");};        //lambda 表达式语句块中只有一局代码市可以省略{}        IEat eat = ()->System.out.println("eat orange");        eat.eat();        eat.defaultMethod();        //带有参数的Lambda        IEat eat = (thing , i )->{            System.out.println("eat.."+ thing + ".." + i + "..斤" );        };        eat.eat("apple" , 10);        //带有返回值的lambda        IEat eat = (thing , i )->{            System.out.println("eat.."+ thing + ".." + i + "..斤" );            return "吃完了";        };        //带有返回值的lambda , 并且代码块只有一行代码时,return 都可以省略        IEat eat = (thing , i ) -> thing + " 吃完了,吃了 " + i;        System.out.println( eat.eat("apple" , 10));        //参数中使用final关键字,可以用简单变量接受,也可以写全,        //这种写发有个问题接口规定的thing 变量引用不能改变。但是我在lambda里仍然可以改变引用          IEat eat = (thing , i ) -> {              thing = new String("22");              return thing;          };        //然而这种写法确实是:thing 引用不能改变, 并且必须i 变量要写全类型。          IEat eat2 = (final String thing , int i ) -> {               thing = new String("22");//此处编译报错 Cannot assign a value to final variable 'thing'              return thing;          };          System.out.println( eat.eat("apple" , 10));    }}//只有一个抽象方法的接口@FunctionalInterfaceinterface IEat{    public String eat(final String thing , int i );  //jdk 1.8新增的    default void defaultMethod(){        System.out.println("接口中的dafault方法");    }  //jdk 1.8新增、    static void staticMethod(){      System.out.println("接口中的静态方法");    }}//class EatImpl implements IEat{//    @Override//    public void eat() {//        System.out.println("eat apple");//    }//}

 

特别注意:

Comparator 类 虽然看上去有两个 抽象方法,但是equal 是object 的 所以不算,所以Comparator 可以使用lambda ,注意@FunctionalInterface 注解也是表明该类是函数式接口

 

 

 

转载于:https://www.cnblogs.com/smallFishs/p/8621825.html

你可能感兴趣的文章
DP题 总结 [更新中]
查看>>
python安装教学
查看>>
JQuery制作简单的网页导航特效
查看>>
操作系统简述
查看>>
设计模式大总结2-结构型模式
查看>>
【Python】不定期更新学习小问题整理
查看>>
Zico源代码分析:执行启动过程分析和总结
查看>>
Android之Http通信——1.初识Http协议
查看>>
hdu5044(二分)
查看>>
静态路由、缺省路由的作用
查看>>
linux快捷键绝对路径相对路径讲解
查看>>
又漏一次
查看>>
dede模板中plus文件路径使用方法
查看>>
xml解析demo使用
查看>>
python使用模板手记
查看>>
No result defined for action com.nynt.action.ManageAction and result input问题
查看>>
iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
查看>>
洛谷 P3627 [APIO2009](抢掠计划 缩点+spfa)
查看>>
c++ 连接数据库
查看>>
函数指针与回调函数
查看>>