在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 為什么一個(gè)類不能實(shí)現(xiàn)自己的內(nèi)部接口?

為什么一個(gè)類不能實(shí)現(xiàn)自己的內(nèi)部接口?

public class A implements A.B{

    
    @Override
    public void fly() {}

    @FunctionalInterface
    interface B {
        void fly();
    }
}

如果這樣寫的話會(huì)報(bào)錯(cuò)cyclic inheritance involving ....balabala

而只要把接口B移動(dòng)到另外的文件中就不會(huì)有這樣的問題了。
我知道 接口默認(rèn)都是static的,他不會(huì)默認(rèn)持有外部類的引用

這個(gè)接口B 并沒有與A有繼承/實(shí)現(xiàn)的關(guān)系,為什么不能編譯通過呢?

回答
編輯回答
掛念你

循壞繼承在java中是不允許的,不僅僅局限于接口,類也不能循環(huán)繼承。因?yàn)榫幾g的時(shí)候,編譯器不知道該先編譯哪個(gè)。比如你的這個(gè)例子,編譯class A的時(shí)候需要先編譯A.B,但是A.B又是class A的內(nèi)部接口。

2018年5月4日 19:03