package Work;
/**
*
-
@author Monk
*注意Lambda表达式是jdk1.8的新特性;
*目的是简化匿名内部类
*语法:
*() -> {}
*(小括号):表示抽象方法参数列表
*->:Lambda符号,箭头操作符
*{}:抽象方法的方法体实现
*函数式接口:只有一个抽象方法的接口;
*Lambda表达式使用前提:函数式接口;
*检测函数式接口:@FunctionalInterface;
*/
public class TestLambda {
private static Object d;public static void main(String[] args) {
B b=new B(){
public void test(){
System.out.println(“重写接口B中的方法”);
}}; b.test();//Lambda表达式写法; b=()->{System.out.println("重写接口B中的方法");}; b.test(); //写法二有参抽象方法时的写法,下面小写的e与test1(int a)是形参 // D d=(e)->{System.out.println("重写接口D中有参抽象方法,实参值为:"+e);}; // d.test1(10); //通过这个匿名对象的实参传一个值给两个形参; // d.test1(256); // d.test1(478); //写法三,当抽象方法中的参数是两个以上的时候的写法,参数只有一个的时候(小括号)可以省略,多个参数小括号不能省略; // D d=(e,m)->{System.out.println("重写接口D中有参抽象方法,实参值为:"+e+","+m);}; // d.test1(3,7); //写法四,当接口中的抽象方法是有返回值的时候,并且只有一条return语句时,return和{}都可以省略; //D d=(e,m)->"我爱java"; //System.out.println(d.test1(13,14));//注意只有方法中有返回值时我们才可以这么打印; //写法五,当方法体中的打印语句只有一句的时候前后{}可以省略; D d=(e,m)->System.out.println("重写接口D中有参抽象方法,实参值为:"+e+","+m); System.out.println("222222");
}
}
//函数式接口;
@FunctionalInterface
interface B{
void test();
}
interface D{
void test1(int a,int m);
}