小白菜鸡博主,从工作开始是用的jdk1.7和jdk1.8。但是对于1.8的一些新特性是没有什么理解,比如Lambda表达式的写法用法。因为写业务逻辑基本上很少向这个点去想,一些curd的东西也没有必要硬着使用Lambda的写法。但是在最近的一些学习或者看其他同事的代码时,有遇到这种写法的,记录一下。个人理解是,可以不用,不能不会。
1. ->
是一个匿名函数,也就是无名称的函数
例如:(x,y) -> x-y 输入两个参数,输出x-y的值,-> 后面是方法体,多行代码,使用{}包起来
或者
new Thread(() -> {System.out.println("Lambda!");}).start(); 启动一个线程,线程中的run方法是打印 Lambda!
2.:: 双冒号
获取方法使用的。就是Java中的方法引用,类名::方法名,是 -> 写法的简写
比如
new Thread(() -> a.m1(),"t1").start();,
可以写为
new Thread(a::m1,"t1").start();
其中a为A类的实例,m1()为A类中的方法