Lambda
Lambda表达式就是简写了函数式接口(函数式接口有且只有一个抽象函数)
测试代码
按照原来的方式我们都是线实现接口,重写方法,再进行实例化调用
// 接口
public interface WxUtil {
int jiec(int s);
}
// 接口实现类
public class WxUtilImpl implements WxUtil{
@Override
public int jiec(int s) {
return s*s;
}
}
// 测试类
public class lam01 {
public static void main(String[] args) {
WxUtil ws = new WxUtilImpl();
System.out.println(ws.jiec(9));// 81
}
}
然后我们再使用Lambda和接口实现方法进行对比,都没有使用实现类
接口实现方法
// 接口
public interface WxUtil {
int jiec(int s);
}
// 测试类
public class lam01 {
WxUtil ws = new WxUtil(){
@Override
public int jiec(int s) {
return s*s;
}
};
System.out.println(ws.jiec(9));// 81
}
}
查看编译文件
发现会出现一个内部匿名类
Lambda表达式
// 测试接口
public interface WxUtil {
int jiec(int s);
}
// 测试类
public class lam01 {
public static void main(String[] args) {
WxUtil ws = s -> s*s;
System.out.println(ws.jiec(9));// 81
}
}
查看编译文件
使用Lambda表达式就不会出现内部匿名
使用Lambda表达式要求接口必须是函数式接口
由此我们可以判断
- 再使用情况下多的时候使用传统的实现类
- 不多的情况下使用lambda表达式
- 不建议使用接口内部类