JAVA基础--Lamda表达式&方法引用

JAVA基础--Lamda表达式&方法引用,第1张

JAVA基础--Lamda表达式&方法引用 JAVA基础--Lamda表达式与方法引用
什么是函数接口

lamda表达式与方法引用只能用于函数式接口,函数式接口只包含一条接口方法。

-------------------------------------------undo-------------------------------------------------------------------

什么是lamda表达式:

-------------------------------------------undo-------------------------------------------------------------------

什么是方法应用:

-------------------------------------------undo-------------------------------------------------------------------

lamda表达式与方法应用的作用:

-------------------------------------------undo-------------------------------------------------------------------

使用示例: 1、声明函数式接口

@FunctionInterface注释标注在接口上表示该接口是函数式接口,会在IDE编译层面即可对该接口进行函数式接口约束。不标注即失去在IDE编译层面约束。

进行约束,IDE编译层面报错的函数式接口:

进行约束,IDE编译层面正确的函数式接口:

2、声明其他类型的静态方法

要求:该静态方法形参与返回值与函数式接口形参与返回值一致

另外声明了一个形参不一致的方法用于使用对照比较。

class DemoClass {

    //形参与函数式接口不符,用于使用对比
    public static String DemoClassNoArgs(){
        return "DemoClass1";
    }

    public static String DemoClassHaveArgs(String str){
        return "DemoClass2 "+str;
    }
}
3、声明函数式接口方法调用方法
class DemoUser{

    public String use(DemoInterface demoInterface,String str){
        //函数式接口调用
        return demoInterface.inter(str);
    }

}
4、以方法引用创建函数式接口对象

lamda表达式与方法引用创建函数式接口对象形参不一致时,IDE层面编译是立即报错。

以方法引用为例(编译报错):

lamda表达式与方法引用创建函数式接口对象形参一致时,IDE层面编译是正常。

以方法引用为例(编译正常):

5、以lamda表达式创建函数式接口对象

极简化lamda表达式创建函数式接口对象:

完整化lamda表达式创建函数式接口对象:

6、lamda表达式与方法应用执行代码与结果显示

执行代码:

public class main {

    public static void main(String[] args) {
        DemoUser demoUser=new DemoUser();
        System.out.println("使用方法引用为函数式接口创建对象:");
        String useByMethod = demoUser.use(DemoClass::DemoClassHaveArgs, "byMethod");
        System.out.println(useByMethod);
        System.out.println("使用简化的lamda表达式为函数式接口创建对象:");
        String useByLamda = demoUser.use(demoUserArgs -> demoUserArgs, "simple");
        System.out.println(useByLamda);
        System.out.println("上面简化的lamda表达式复杂化的为函数式接口创建对象:");
        useByLamda = demoUser.use((demoUserArgs) -> {return demoUserArgs;} , "complex");
        System.out.println(useByLamda);
    }
}

执行结果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5076099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存