匿名类
匿名类的出现节省了去创建一个类继承接口的过程
例如原过程如下:
interface IMath{
public int compare(int x,int y);
}
class Compare implements IMath{
public int compare(int x, int y){ //返回x,y中最大的数
return x>y?x:y;
}
}
public class Hello{
public static void main(String []args){
IMath m = new Compare();
System.out.println(m.compare(10,20));
}
}
使用匿名类之后如下:
interface IMath{
public int compare(int x,int y);
}
public class Hello{
public static void main(String []args){
IMath m = new IMath() {
public int compare(int x,int y) {
return x>y?x:y;
}
};
System.out.println(m.compare(10,20));
}
}
简化了一个类继承接口的代码
当借口中只有一个抽象方法的时候可以使用Lambda 表达式可以更加简化代码
使用Lambda表达式如下
interface IMath{
public int compare(int x,int y);
}
public class Hello{
public static void main(String []args){
IMath m = (x,y) -> x>y?x:y;
System.out.println(m.compare(10,20));
}
}
Lambda表达式的格式:
(抽象方法的参数) -> {
方法体;
};
当方法体只有一行的时候可以省略{ }
当方法体只有一行且为return 的时候可以省略return 这个词