码迷,mamicode.com
首页 > 其他好文 > 详细

函数式接口

时间:2020-05-10 09:11:42      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:world   com   例子   one   util   interface   super   enc   abstract   

函数式接口


什么是函数式接口?

只有一个抽象方法的接口即为函数式接口,举个例子,Runnable就是一个函数式接口:

package java.lang;
@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

为什么要强调只有一个抽象方法?接口中的所有方法不都是抽象的吗?

  1. 接口可能声明Object类的方法,如toString或clone,这写声明有可能让方法不再是抽象的。(Java API中的一些接口会重新声明Object类的方法来附加javadoc注释)
  2. 从Java SE8开始,接口中可以声明非抽象方法。
package java.util;
...
@FunctionalInterface
public interface Comparator<T> {
    int compare(T o1, T o2);
    /**
     * 注释
     */
    boolean equals(Object obj);
    default Comparator<T> reversed() {...}
    default Comparator<T> thenComparing(Comparator<? super T> other) {...}
    ......
}

函数式接口与Labmda表达式什么关系?

当需要一个函数式接口的对象时,可以提供一个lambda表达式:

public static void main(String[] args) {
    //匿名内部类
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println("hello world!");
        }
    };

    Thread thread = new Thread(runnable);
    thread.start();
}
public static void main(String[] args) {
    Thread thread = new Thread(()->{
        System.out.println("hello world!");
    });
    thread.start();
}

函数式接口

标签:world   com   例子   one   util   interface   super   enc   abstract   

原文地址:https://www.cnblogs.com/KenBaiCaiDeMiao/p/12861476.html

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