zoukankan      html  css  js  c++  java
  • 函数式接口

    函数式接口


    什么是函数式接口?

    只有一个抽象方法的接口即为函数式接口,举个例子,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();
    }
    
  • 相关阅读:
    自定义全局样式
    ionic错误
    ionic 创建某个文件下的page
    获取高度
    页面加载完成
    css中有些属性的前面会加上“*”或“_(兼容IE浏览器)
    【Visual Studio】error C2220: 警告被视为错误
    H264格式(转)
    什么是信令?什么是信令网?(转)
    XMPP协议实现原理介绍(转)
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/12861476.html
Copyright © 2011-2022 走看看