函数式接口

先看入门例子,函数式编程的魅力

@FunctionalInterface
public interface Hello {
    String msg(String info);
}

怎么去使用

Hello hello = param -> param + "world!";
System.out.println("test functional:" + hello.msg("hello,"));

输出结果

test functional:hello,world!
再看一下产生的一样效果的代码

Hello hello2 = new Hello() {
            @Override
            public String msg(String info) {
                return info + ",world";
            }
        };
System.out.println("test functional:" + hello2.msg("hello,"));

什么是函数式接口

所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法
但是

  • 函数式接口里允许定义默认方法
  • 函数式接口里允许定义静态方法
  • 函数式接口里允许定义java.lang.Object里的public方法


    函数式接口里允许定义默认方法

    静态方法也可以

注解FunctionalInterface

Java 8为函数式接口引入了一个新注解@FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。


接口中包含了两个抽象方法,违反了函数式接口的定义

JDK中的函数式接口举例

java.lang.Runnable,
java.awt.event.ActionListener,
java.util.Comparator,
java.util.concurrent.Callable
java.util.function包下的接口,如Consumer、Predicate、Supplier等

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容