JDK 1.8引入Lamda表达式,实现函数式编程。
引入:interface IMessage { public void print();}public class TestMessaage { public static void main(String[] args) { fun(new IMessage() { @Override public void print() { System.out.println("打印匿名内部类"); } }); } public static void fun(IMessage msg) { msg.print(); } }
有效的代码其实只有: System.out.println("打印匿名内部类");
为了简化匿名内部类的写法,JDK 1.8引入Lamda表达式:
public class TestMesaage { public static void main(String[] args) { fun(() -> System.out.println("打印匿名内部类")); } public void fun(IMessage msg) { msg.print(); } }
Lambda的语法:
· (参数) -> 单行语句 . (参数) -> {多行语句} . (参数) -> 表达式实例:1. (参数) -> {多行语句}interface IMessage { public void print();}public class TestMesaage { public static void main(String[] args) { fun(() -> { System.out.println("打印匿名内部类"); System.out.println("打印匿名内部类2"); System.out.println("打印匿名内部类3"); }); } public void fun(IMessage msg) { msg.print(); } }
2. (参数) -> 表达式
interface IMessage { public int print(int x, int y);}public class TestMessaage { public static void main(String[] args) { fun((x,y) -> x + y); } public static void fun(IMessage msg) { System.out.println(msg.print(3,5)); } }
总结:
利用Lambda表达式最终解决的问题:避免了匿名内部类定义时过多的无用操作。