chapter37(lixinghua) lambda表达式

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);
    }
}
发布了85 篇原创文章 · 获赞 40 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/ljb825802164/article/details/90299855