Lambda表达式
都2020年了,Java程序员还不会lambda表达式?(赶快学起来)
lambda表达式是JDK8的新特性,可以取代大部分的匿名内部类,写出更优雅的代码。
lambda基础语法
/**
* @author sean yang
*/
@FunctionalInterface
public interface NoReturnMultiParam {
/**
* 多参数无返回值
* @param a
* @param b
*/
void method(int a, int b);
}
@FunctionalInterface
public interface NoReturnNoParam {
/**
* 无参无返回值
*/
void method();
}
@FunctionalInterface
public interface NoReturnOneParam {
/**
* 一参无返回
* @param a
*/
void method(int a);
}
@FunctionalInterface
public interface ReturnMultiParam {
/**
* 多参数有返回
* @param a
* @param b
* @return
*/
int method(int a,int b);
}
@FunctionalInterface
public interface ReturnNoParam {
/**
* 无参数有返回
* @return
*/
int method();
}
@FunctionalInterface
public interface ReturnOneParam {
/**
* 一参数有返回
* @param a
* @return
*/
int method(int a);
}
用lambda表达式来测试上面的六个接口
public class LambdaMain {
public static void main(String[] args) {
//无参无返回
NoReturnNoParam noReturnNoParam = () -> {
System.out.println("无参无返回");
};
noReturnNoParam.method();
//一参数无返回
NoReturnOneParam noReturnOneParam = (int a ) -> {
System.out.println("一参数无返回"+a);
};
noReturnOneParam.method(110);
//多参无返回
NoReturnMultiParam noReturnMultiParam = (int a,int b) -> {
System.out.println("多参数无返回"+ (a+b));
};
noReturnMultiParam.method(2,3);
//无参有返回
ReturnNoParam returnNoParam = () -> {
System.out.println("无参有返回");
return 1;
};
int res = returnNoParam.method();
System.out.println("res = " +res);
//一参有返回
ReturnOneParam returnOneParam = (int a) ->{
System.out.println("一参有返回");
return a;
};
int res1 = returnOneParam.method(3);
System.out.println("res1 = " +res1);
//多参有返回
ReturnMultiParam returnMultiParam = (int a,int b) ->{
System.out.println("多参有返回");
return a + b;
};
int res2 = returnMultiParam.method(2,3);
System.out.println("res2 = " +res2);
}
}
输出结果为:
无参无返回
一参数无返回110
多参数无返回5
无参有返回
res = 1
一参有返回
res1 = 3
多参有返回
res2 = 5