java高级:函数式接口

1什么是函数式接口:

                                

2如何判断函数式接口是否成功创建:使用FUNCTIONINTERFACE注解(使用方法同@override)

                                

3 函数式接口的使用:一般可以作为方法的参数和返回值来使用(在这里重新复习接口内容知识

         1.如果主方法调用的方法,该方法传递进来的参数是一个接口,那么可以:

                1主方法中传入的参数可以是:接口的实现类

                2主方法中传入的参数可以是:接口的匿名内部类

                3如果方法中的参数是函数式接口,则可以使用lambda表达式

package com.bed.hanshushijiekou;
//使用三种方法来调用接口的抽象方法
public class mainfangfa {
    //第一种方法:直接把接口传递进来,然后调用接口中的方法。
    public static void method1(myInterface myinter){
        myinter.method();
    }
    public static void main(String[] args) {
    //第二种方法:调用方法一,然后参数传递接口的实现类
        method1(new myInterfaceimpl());
    //第三种方法。参数传递接口的匿名内部类。
        method1(new myInterface() {
            @Override
            public void method() {
                System.out.println("传递接口的匿名内部类重写接口中的方法");
            }
        });
    //同样是第三种方法使用lambda表达式
        method1(()-> System.out.println("使用lambda表达式传递接口的匿名内部类重写接口中的方法"));
    }
}

                 补充知识点:lambda表达式可以看作是匿名内部类的语法糖。但是lambda表达式省去

                                      了.class文件,所以效率更高

        添加知识点:lambda表达式的延迟性:

        现有如下代码 :

                                

         日志只有传入等级为一级时才显示信息,当传入等级为其他等级时,msg1+msg2+msg3的组

         合操作就是多余的。这时我们可以使用lambda表达式的延时特性来节省资源。避免性能浪费        代码实现:

//创建一个接口里面有一个抽象类方法
package com.bed.hanshushijiekou.demo01;

public interface msgplus {
    public abstract String msgplus();
}

//执行日志
package com.bed.hanshushijiekou.demo01;

public class RiZhishow {
    public static void msgshow(int level,msgplus msg){
        if(level==1){
            System.out.println(msg.msgplus());
        }
    }
    public static void main(String[] args) {
        String msg1="hello";
        String msg2="bed";
        String msg3="java";

        msgshow(2,()->{
            return msg1+msg2+msg3;//重写接口中的抽象方法
        });
    }
}

     1.使用lambda表达式作为方法的参数:(其实上面的方法就是一个大的演示框架,而下面的

                主方法的lambda就相当于往构建好的大框架(接口的实现类)中添加更细致的操作步骤而已)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值