一、概述
只要是只有一个方法的接口就可以使用lambda表达式,这样的接口被称为“函数式接口”。
二、例子
public interface TestInter {
void test();
}
public interface TestInter2 {
void test(int param);
}
public interface TestInter3 {
boolean test(int param);
}
public class TestLambda {
public void func(TestInter testInter){
testInter.test();
}
}
public class TestLambda2 {
public void func(TestInter2 testInter2,int param){
testInter2.test(param);
}
}
public class TestLambda3 {
public boolean func(TestInter3 testInter3,int param){
return testInter3.test(param);
}
}
/**
* 匿名内部类,只有一个方法的接口就可以使用lambda表达式,例如Runnable
* public interface Runnable {
* public abstract void run();
* }
* 参考:https://www.cnblogs.com/yulinfeng/p/8452379.html
*/
public class Test1 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello world");
}
}).start();
new Thread(() -> System.out.println("xxx")).start();
new TestLambda().func(new TestInter() {
@Override
public void test() {
System.out.println("TestInter");
}
});
//没有参数,没有返回值
new TestLambda().func(() -> System.out.println("TestInter"));
//有参数,没有返回值
new TestLambda2().func((x) ->System.out.println(x),1);
//有参数,有返回值
//方法多行用{}包裹
new TestLambda3().func((x) -> {
System.out.println("TestInter3");
return false;
},3);
}
}
三、测试结果
参考:https://www.cnblogs.com/yulinfeng/p/8452379.html