lambda
- lambda的实质是对匿名类的简化,但是他有较为苛刻的使用场景
- 必须是一个函数式接口,抽象类不行
- 接口中只能有一个未实现的方法,可以有默认方法,静态方法(换句话说必须是函数式接口)
- 在传统的匿名类中,如果匿名类访问类外的变量,这个变量必须是一个final变量或者不被修改的变量。同样的,lambda表达式也有同样的要求
public class Java8Tester {
public static void main(String args[]){
Java8Tester tester = new Java8Tester();
MathOperation addition1 = new MathOperation() {
@Override
public int operation(int a, int b) {
return a + b;
}
};
MathOperation addition = (int a, int b) -> a + b;
int a1=10;
TestLambda lambda=()-> System.out.println(a1);
lambda.print();
out.println("10 + 5 = " + tester.operate(10, 5, addition));
out.println("10 + 5 = " + tester.operate(10, 5, addition1));
}
interface MathOperation {
int operation(int a, int b);
default int print(int a,int b){
return 1;
}
static void print(){}
}
interface TestLambda{
void print();
}
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a, b);
}
}
lambda表达式的意义
- Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
- 简化书写
参考:http://www.runoob.com/java/java8-lambda-expressions.html