匿名内部类与Lambda
匿名内部类:必须基于抽象类或接口,主要目的是减少程序中类的定义
interface IMessage{ public void print(String info); } public class Hello{ public static void main(String[] args) { IMessage msg = new IMessage() { //匿名内部类 @Override public void print(String info) { System.out.println(info); } }; msg.print("Hello"); } }
Lambda可以实现更简单的匿名内部类的使用
两种方法体:
(参数) -> 程序执行的语句;
(参数) -> {多行程序执行的语句};
(参数) -> 表达式;
interface IMessage{ public void print(String info); } public class Hello{ public static void main(String[] args) { IMessage msg = (info) -> System.out.println(info); msg.print("Hello"); } }
interface IMath{ public int add(int x,int y); } public class Hello{ public static void main(String[] args) { IMath msg = (i, j) -> { int result = i + j; System.out.println(i); System.out.println(j); System.out.println(result); return result; }; System.out.println(msg.add(10, 20)); } }
interface IMath{ public int add(int x,int y); } public class Hello{ public static void main(String[] args) { IMath msg = (i, j) -> i + j; //没有return System.out.println(msg.add(10, 20)); } }