一、Java是面向对象的语言,不能象函数式语言那样嵌套定义方法。
二、Java的匿名内部类只能存在于创建它的线程中,不能运行在多线程中,无法充分利用多核的硬件优势。
三、匿名内部类的缺点还有:
1. 语法相对复杂。
2. 在调用内部类的上下文中,指引和this的指代容易混淆。
3. 类加载和实例创建语法不可避免。
4. 不能引用外部的非final对象。
5. 不能抽象化控制流程。
lambda的语法包括三部分
1、参数列表
2、箭头符号”->”
3、代码块。
简化Runnable接口实现方式
private static void TestLambda() {
int i = 10;
new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类执行");
System.out.println("i=" + i);
}
}.run();
Runnable runnable = () ->
System.out.println("用lambda实现Runnable接口");
System.out.println("i=" + i);
runnable.run();
}
实现自定义接口实现方式
private static void TestLamabda01() {
new Action() {
@Override
public void execute(String content) {
System.out.println(content);
}
}.execute("jdk1.8之前的匿名内部类实现方式,");
Action action = (String content) -> {
System.out.println(content);
};
action.execute("jdk1.8的lambda语法实现登陆操作");
}