博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java8-lambda
阅读量:6274 次
发布时间:2019-06-22

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

1. lambda解决的问题:

  • java不能函数式编程
  • java匿名内部类只能单线程运行
  • 匿名内部类缺陷:
    1. 语法复杂
    2. this容易混淆
    3. 不能引用外部变量
    4. 不能抽象化来控制流程

2. Lambda实现匿名内部类

  • 在lambda中,可以使用方法内部变量 ,但是不能改变它的值(i++报错)
package com.fantJ.JAVA_8;/** * Created by Fant.J. * 2017/12/12 20:58 */public class Lambda_Runnable {    public static void main(String[] args) {        new Runnable(){            @Override            public void run(){                System.out.println("匿名内部类实现Runnable接口");            }        }.run();        int i = 1;        Runnable r=()->{            System.out.println("lambda实现Runnable接口");            System.out.println("i="+i); //测试是否可以使用方法内部变量  (匿名内部类只可以使用常量)            //i++;   //报错        };        r.run();    }}
img_5e151cf8a364d904f1b90a74dd4436b1.png
image.png

3. Lambda实现自定义接口

package com.fantJ.JAVA_8;/** * Created by Fant.J. * 2017/12/12 21:11 */public class Lambda_Interface {    public static void main(String[] args) {        new Message() {            @Override            public void message(String msg) {                System.out.println(msg);   //打印传参 msg            }        }.message("用匿名内部类调用自定义的接口");        Message m = (String msg) -> {            System.out.println(msg);        };        m.message("lambda 调用自定义接口");    }    static interface Message {        void message(String msg);    }}
img_fdf851a91ee92847bcb56ddbf53254e0.png
image.png

转载地址:http://lkmpa.baihongyu.com/

你可能感兴趣的文章
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Android android.support.design包
查看>>
CheckBox:屏蔽setChecked方法对OnCheckedChangeListener的影
查看>>
java线程池
查看>>
UI面试内容
查看>>
Linux之RPM详解
查看>>
Windows Azure 常见问题及测试题
查看>>
android-genymotion模拟器使用
查看>>
phpstudy2018 windows 下搭建https 环境
查看>>
使用guava来进行优雅的函数式编程
查看>>
C++ - 判断文件夹(folder)是否存在(exist)
查看>>
小程序-修改多级数据
查看>>
不管10天20天这都是个悲剧何必呢
查看>>
建立简单的FTP服务器
查看>>