lambda的方法引用
lambda的方法引用是特定情况下对lambda表达式的进一步简化,如果lambda的方法体中只有一行代码,而且这行代码是调用了另一个方法,调用的方法需要与当前lambda的方法有相同的数据处理,也就是对lambda方法传递了n个参数,lambda没有对参数进行任何操作原封不动的传递给另一个参数。如果lambda方法有返回值。 其调用方法的返回值,lambda会原封不动的返回给调用者
interface A{
void t(int num) ;
}
A a1 = new A(){
public void t(int num){
System.out.println(num) ;
}
}
A a2 = num->System.out.println(num) ;
A a3 = System.out::println ;
当lambda中引用的是一个对象的方法
class A{
public void sum(int num1 , int num2){
System.out.println(num1 + num2);
}
}
interface B{
void t(int n1, int n2) ;
}
A a = new A();
B b1 = (n1,n2)->a.sum(n1,n2);
B b2 = a::sum ;
当lambda中引用的是一个类的方法
class A{
public static int sum(int num1,int num2) {
return num1 + num2 ;
}
}
interface B{
int t(int n1, int n2) ;
}
B b1 = (n1,n2)->{return A.sum(n1,n2);};
B b2 = A::sum ;
int r = b1.t(10,20)
当lambda中引用的是一个构造方法
class Car{
int cno ;
String cnanme ;
String color ;
public Car(int cno , String cname , String color){
...
}
}
interface A{
Car create(int cno , String cname , String color);
}
A a1 = new A(){
public Car create(int cno , String cname , String color){
return new Car(cno,cname,color);
}
};
A a2 = (cno,cname,color)->new Car(cno,cname,color) ;
A a3 = Car::new ;