码迷,mamicode.com
首页 > 编程语言 > 详细

Java函数式接口

时间:2020-01-10 00:40:05      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:文件   函数   拼接字符串   程序   ati   out   java   image   java函数   

函数式接口:有且只有一个抽象方法的接口,称为函数式接口

当然也可以包含有其他方法(默认,静态,私有)

函数式接口可以作为方法的参数,也可以作为方法的返回值

注解 @FunctionalInterface 可以检测一个接口是否是函数式接口

package com.fgy.demo;

@FunctionalInterface
public interface MyFunctionalInterface {
    public abstract void method();
}
package com.fgy.demo;

public class Demo {
    public static void main(String[] args) {
        show(() -> System.out.println("---"));
    }

    private static void show(MyFunctionalInterface o) {
        o.method();
    }
}

使用lambda表达式可以提高程序性能:

  1.使用传统匿名内部类会生成额外的class文件,在性能上也有损耗。

  2.Lambda的特点:延迟加载,也可以提高性能。

技术图片

package com.fgy.demo2;

public class Demo01Logger {
    public static void main(String[] args) {
        String msg1 = "Hello";
        String msg2 = "Word";
        String msg3 = "Java";

        showLog(2, msg1 + msg2 + msg3);
    }

    private static void showLog(int level, String message) {
        System.out.println("不满足条件也执行,也拼接字符串:" + message);
        if (level == 1) {
            System.out.println("满足条件:" + message);
        }
    }
}

技术图片

package com.fgy.demo2;

@FunctionalInterface
public interface MessageBuilder {
    public abstract String builderMessage();
}
package com.fgy.demo2;

public class Demo02Logger {
    public static void main(String[] args) {
        String msg1 = "Hello";
        String msg2 = "Word";
        String msg3 = "Java";

        showLog(2, () -> {
            System.out.println("不满足条件不执行");
            return msg1 + msg2 + msg3;
        });
    }

    private static void showLog(int level, MessageBuilder mb) {
        if (level == 1) {
            System.out.println(mb.builderMessage());
        }
    }
}

技术图片

Java函数式接口

标签:文件   函数   拼接字符串   程序   ati   out   java   image   java函数   

原文地址:https://www.cnblogs.com/roadlandscape/p/12174028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!