package lambda;
//lambda表达式要求,要实现的接口中必须只有一个方法
//@FunctionalInterface 用来约束接口中只有一个方法的声明 如果大于或小于一个方法会报错
@FunctionalInterface
public interface Language {
void sayLan(String lan);
}
package lambda;
@FunctionalInterface
public interface Math {
public int add(int x,int y);
}
package lambda;
import org.junit.Test;
public class testLanguage {
@Test
public void test(){
//匿名内部类直接实现接口方法 节省了一个文件(接口的实现类省掉)
Language language = new Language() {
@Override
public void sayLan(String lan) {
System.out.println("I speak "+lan);
}
};
language.sayLan("chinese");
//lambda表达式实现接口方法
//(lan)->{System.out.println("I speak "+lan);}是接口中的方法实现
Language language1 = (lan)->{System.out.println("I speak "+lan);};
language1.sayLan("English");
// p1+p2 就是接口中add方法的方法体
//虽然add方法又返回值 但是在lambda中不用显示写出来
//简单来说 lambda中 "->" 的左边是参数 右边是接口中的函数体
Math math = (p1,p2) -> p1+p2;
int value = math.add(1,2);
System.out.println(value);
}
}