1.前提条件是一个接口,且接口中必须只能有一个方法
配置类
public interface Father {
public abstract Integer zhagongsi(String str );
}
测试方法
//原始写法
Father father = new Father() {
@Override
public Integer zhagongsi(String str) {
return Integer.parseInt(str);
}
};
因为匿名类的类型、方法名、方法返回类型、方法权限修饰符 都知道,所以我们可以省去类的结构变成如下结构
Father father =
(String str) -> {
return Integer.parseInt(str);
};
又因为如果只有一个参数的话,方法参数的括号都可以不用,以及方法参数的类型
Father father =
str -> {
return Integer.parseInt(str);
};
如果接口中实现的方法代码只有一行的话,方法结构也可以去掉,因为只有一行方法返回类型也知道,retrun关键字也可以去掉
Father father = str -> Integer.parseInt(str);
因为该参数也是方法体中一个方法(普通方法)的参数,也可以简写成
Father f = Integer::parseInt;
测试方法
Father f1 = new Father() {
@Override
public Integer zhagongsi(String str) {
return new Integer(str);
}
};
该参数也是方法体中一个方法(构造方法)的参数,也可以简写成
Father f2 = Integer::new;
总结:
1.Lambda语法优势是写法简单,但是不便于阅读
2.简写的宗旨是弱化了类的结构,减少类文件编写,更关注于逻辑编写(接口方法传入什么参数,如何使用,最后给什么出参)