java8中关于接口的新特性
- 在java8之前,接口中的方法必须是抽象方法,java8中可以有静态方法和默认方法
public interface MyInterface {
//默认方法
default void run() {
}
//静态方法
public static void eat() {
}
}
- 产生了函数式表达式
- lambda表达式
函数式表达式
函数式表达式,就是一个接口中只有这一个方法,就称为函数式表达式
public interface MyFunctionLambda {
//只有一个方法
public void go(String str);
}
lambda表达式
lambda表达式作用就是为了减少函数表达式匿名类的实现的代码量
A:不使用lambda的匿名类使用
MyFunctionLambda ma2=new MyFunctionLambda() {
@Override
public void go(String str) {
// TODO Auto-generated method stub
System.out.println(str+"不使用lambda是匿名内部类的实现");
}
};
ma2.go("abcde");
B:使用lambda表达式的匿名类
//注意:因为函数表达式中只有一个方法,使用匿名内部类只能重写一个方法,所以可以使用lambda表达式
MyFunctionLambda ma=str->{//lambda表达式的书写方法
//重写方法
System.out.println(str+"lambda表达式实现成功了");
};
ma.go("abcd");
由此可见,lambda表达式大大减少了代码量,对于函数表达式方法使用