• 函数式接口


    函数式接口在java中:有且仅有一个抽象方法的接口

    import java.util.logging.Level;
    
    /*
    日志案例
    发现以下代码存在性能浪费的问题
    调用showlog方法,传递的第二个参数是一个拼接后的字符串
    先把这个字符串拼接好,然后电泳sholog方法
    showlog方法中如果传递的日志等级不是1级
    那么就不会是如此拼接的字符串
    所以感觉字符串白拼接,存在浪费
    
    
     */
    public class Demo01Logger {
        //定义一个根据日志的级别,显示日志信息的方法
        public static void showLog(int level,String message){
            //对日志的等级进行判断,如果是1级别,那么输出日志信息
            if (level==1){
                System.out.println(message);
            }
    
        }
    
        public static void main(String[] args) {
            //定义三个日志信息
            String msg1="hello";
            String msg2="World";
            String msg3="java";
            //调用showLog方法,传递日志级别和日志信息
            showLog(1,msg1+msg2+msg3);
    
        }
    }

    优化:

    /*
    使用lambda优化案例
    lambda的特点:延迟加载
    lambda的使用前提,必须存在函数式接口,
    
    * */
    public class demo02Lambda {
        //定义一个显示日志的方法,方法的参数传递日志的等级和Messagebuilder接口
        public static void showLog(int level,MessageBuilder mb){
            //对日志的等级进行判断,如果是1级,则调用MessageBuilder接口中的builderMessager方法
            if(level==1){
                System.out.println(mb.builerMessage());
    
            }
        }
    
        public static void main(String[] args) {
            String msg1="hello";
            String msg2="World";
            String msg3="java";
            showLog(1,()->{
                return msg1+msg2+msg3;
            });
    
            /*
    
            使用lambda表达式作为参数传递,仅仅是把参数传递到showlog方法中
            只有满足条件,日志的等级是1级
               才会调用接口messageBuilder中的builderMessage
               才会进行字符串的拼接
            如果条件不满足,日志等级不是1级
               那么MessageBuilder接口中的方法builder Message也不会执行
               所以拼接字符串的代码也不会执行
            所以不存在浪费
             */
            showLog(2,()->{
                System.out.println("不满足条件不执行");
                return msg1+msg2+msg3;
            });
        }
    }
    @FunctionalInterface
    public interface MessageBuilder {
        //定义一个拼接消息的抽象方法,返回被拼接的消息
        public abstract String builerMessage();
    }
  • 相关阅读:
    生命的等级
    一个笑话
    第一天的日记
    接吻鱼的秘密
    [转载] 女人到底想要什么??
    纪念一塌糊涂bbs
    上海市区找到一处比较便宜的打乒乓地方:)
    朋友在奔驰公司,给我提供的F1照片,奔驰必胜!
    前台mm何处有?
    一个令我感动的女孩!
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/13831926.html
Copyright © 2020-2023  润新知