美文网首页
函数式接口

函数式接口

作者: lucode | 来源:发表于2018-12-27 00:09 被阅读14次

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

    @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等

    相关文章

      网友评论

          本文标题:函数式接口

          本文链接:https://www.haomeiwen.com/subject/nrdllqtx.html