函数式接口
【一个接口只有一个抽象方法】
λ表达式
【前身:匿名内部类】
@FunctionalInterface
public interface FuncInterface {
void test();
}
class LambdaTest {
public static void main(String[] args) {
fun(new FuncInterface() {
@Override
public void test() {
System.out.println("匿名内部类实现FuncInterface接口");
}
});
fun(()->{
System.out.println("Lambda表达式实现FuncInterface接口");
});
}
public static void fun(FuncInterface f1) {
f1.test();
}
}
Lambda使用情况
1、无返回值无参数
2、无返回值有参数
3、有返回值无参数
4、有返回值有参数
public class Lambda {
public static void main(String[] args) {
//1
NoParaNoReturn noParaNoReturn = () -> System.out.println("无返回值无参数");
noParaNoReturn.test();
//2
NoParaHasReturn noParaHasReturn = () -> 1 + 2;
System.out.println(noParaHasReturn.test());
//3
HasParaNoReturn hasParaNoReturn = x -> {
x += 1;
System.out.println(x);
};
hasParaNoReturn.test(20);
//4
HasParaHasReturn hasParaHasReturn = (x, y) -> x += y;
System.out.println(hasParaHasReturn.test(1, 2));
}
}
//1
interface NoParaNoReturn {
void test();
}
//2
interface NoParaHasReturn {
int test();
}
//3
interface HasParaNoReturn {
void test(int x);
}
//4
interface HasParaHasReturn {
int test(int x, int y);
}