函数式接口

2018-12-27  本文已影响14人  lucode

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

@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,"));

什么是函数式接口

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

注解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等

上一篇 下一篇

猜你喜欢

热点阅读