JDK1.8新特性
jdk1.8新特性之函数型接口
jdk1.8新特性Lambda表达式推过程
jdk1.8新特性Stream流处理
上一篇我们对 jdk的函数型接口 有了一定了解,这对我们本片文章还是有帮助的!
概念
Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
Lambda表达式推演
定义一个函数接口
这里为了方便使用,参与泛型定义
@FunctionalInterface
public interface MyInterface<T,R> {
R strategy (T t, R r);
}
常规写法
public static void test(MyInterface<String, List> inter) {
List<String> list = inter.strategy("hello", new ArrayList());
System.out.println(list);
}
public static void main(String[] args) {
test(new MyInterface<String, List>() {
@Override
public List strategy(String s, List list) {
list.add(s);
return list;
}
});
}
其实这并没有什么不对,但是我们只是想进行赋值,多了好多无用的冗余代码,这是Lambda表达式就产生了!
Lambda表达式写法
public static void test(MyInterface<String, List> inter) {
List<String> list = inter.strategy("hello", new ArrayList());
System.out.println(list);
}
public static void main(String[] args) {
test((x,y)->{
y.add(x);
return y;
});
}
当我们运行,得到的结果一致!
推演过程
(x,y)->{…} --> test(param) --> param==MyInterface --> lambda表达式-> MyInterface类型
这个就是对于lambda表达式的类型检查,MyInterface接口就是lambda表达式的目标类型(target typing)(x,y)->{…} --> MyInterface.strategy(T r, R r)–> MyInterface<String, List> inter
–> TString RList --> lambda–> (x, y) == strategy(T t , R r)–> xTString yRList
lambda表达式参数的类型检查
Thread的写法
new Thread(() -> System.out.println("javayh")).start();
关注 Java有货领取更多资料
联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
- Java 设计模式学习代码 https://github.com/Dylan-haiji/design-pattern
- SpringCloud学习代码: https://github.com/Dylan-haiji/javayh-cloud
- AlibabaCloud学习代码:https://github.com/Dylan-haiji/javayh-cloud-nacos
- SpringBoot+Mybatis 多数据源切换:https://github.com/Dylan-haiji/javayh-boot-data-soure
- Redis、Mongo、Rabbitmq、Kafka学习代码: https://github.com/Dylan-haiji/javayh-middleware
- SpringBoot+SpringSecurity实现自定义登录学习代码:https://github.com/Dylan-haiji/javayh-distribution