第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以在接口內(nèi)使用 lambda 表達(dá)式作為接口內(nèi)的默認(rèn)或靜態(tài)實現(xiàn)嗎?

我們可以在接口內(nèi)使用 lambda 表達(dá)式作為接口內(nèi)的默認(rèn)或靜態(tài)實現(xiàn)嗎?

精慕HU 2023-07-19 16:03:39
我現(xiàn)在有一個奇怪的疑問,據(jù)我所知,為了使用 lambda 表達(dá)式,它應(yīng)該是一個具有單一抽象方法的函數(shù)接口?,F(xiàn)在的問題是我們可以在另一個接口中提供它的實現(xiàn)作為靜態(tài)或默認(rèn)實現(xiàn)嗎?謝謝。
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

您可以定義一個 lambda 表達(dá)式來表示一個A實例,無論您所處的上下文如何。它可以是靜態(tài)接口方法,也可以是默認(rèn)接口方法。


@FunctionalInterface

interface A {

    void printMessage();

}

interface B {

    default void printMessage() {

        A a = () -> System.out.println("A implementation (1)");

        a.printMessage();

    }

}

interface C {

    static void printMessage() {

        A a = () -> System.out.println("A implementation (2)");

        a.printMessage();

    }

}

正如您可能已經(jīng)注意到的,它并不是特別有用,因為這兩種方法都可以簡單地重寫為


System.out.println("...");

如果接口之間存在關(guān)系,則默認(rèn)方法將為超級接口中定義的方法提供實現(xiàn)。靜態(tài)方法會導(dǎo)致編譯錯誤,因為它們無法覆蓋實例方法。


@FunctionalInterface

interface A {

    void printMessage();

}

interface B extends A {

    @Override

    default void printMessage() {

        A a = () -> System.out.println("A implementation (1)");

        a.printMessage();

    }

}

interface C extends A {

    // compilation error

    static void printMessage() {

        A a = () -> System.out.println("A implementation (2)");

        a.printMessage();

    }


查看完整回答
反對 回復(fù) 2023-07-19
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號