2. JDK 8 接口新特性

1. 接口結(jié)合 lambda

1. 先定義接口

@FunctionalInterface
interface Interface1{
    int doubleNum(int i);
}

2. 使用方法

public static void method1() {
    Interface1 i1 = (i) -> i * 2;

    Interface1 i2 = i -> i * 2; // 最常見的寫法

    Interface1 i3 = (int i) -> i * 2;

    Interface1 i4 = (i) -> {
        System.out.println("--------");
        return i * 2;
    };
}

注意:并不是沒(méi)有限制的! 這個(gè)接口里面只能有一個(gè)要實(shí)現(xiàn)的方法 ?。?/strong>

在接口上面加上 FunctionalInterface 注解就是告訴大家,這是個(gè) lambda 接口,不要在里面再加其他方法了,再加就會(huì)提示報(bào)錯(cuò)的, 即單一責(zé)任制。

2. 默認(rèn)方法(個(gè)人認(rèn)為這個(gè)很重要)

注意,默認(rèn)方法不屬于要實(shí)現(xiàn)的方法!!

舉例:

@FunctionalInterface
interface Interface2{
    int doubleNum(int i);
    default int add(int x, int y){
        return x + y;
    }
}

使用:

public static void method2() {
    Interface2 i2 = i -> i * 2;
    System.out.println(i2.doubleNum(10));
    System.out.println(i2.add(3, 4));
}

為什么我覺得默認(rèn)方法在 JDK8 里面很重要的?

可以看看 List 里面的源碼,在里面搜索一下 since, 你會(huì)發(fā)現(xiàn),List 是在 JDK1.2 時(shí)引入的,1.2 - 1.8 版本之間都沒(méi)有再往里面添加方法,只有 1.8 時(shí)才新加了如下的方法

default Spliterator<E> spliterator()
default void replaceAll(UnaryOperator<E> operator)
default void sort(Comparator<? super E> c)

為什么到 1.8 才敢加?因?yàn)橹皼](méi)有默認(rèn)方法,那你一加方法,其他實(shí)現(xiàn)了這個(gè)接口的類,都得重新改,正因?yàn)橛辛四J(rèn)實(shí)現(xiàn),所以才敢加新方法。

3. 對(duì)默認(rèn)方法的覆蓋

1. 定義兩個(gè)相同的接口

@FunctionalInterface
interface Interface2{
    int doubleNum(int i);
    default int add(int x, int y){
        return x + y;
    }
}

@FunctionalInterface
interface Interface3{
    int doubleNum(int i);
    default int add(int x, int y){
        return x * y;
    }
}

2. 然后寫個(gè)接口繼承這兩個(gè)接口

@FunctionalInterface
interface Interface4 extends Interface2, Interface3 {
    @Override
    default int add(int x, int y) {
        return 0;
    }
}

可見默認(rèn)方法真的很方便,很重要,很利于修改在之前版本定義好的接口,推動(dòng)代碼的進(jìn)步.

代碼地址: https://github.com/hmilyos/lambda-demo.git
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容