2014-01-22 60 views
7

我已經通過以下鏈接Why would a static nested interface be used in Java?這段代碼中嵌套接口的用途是什麼

在我的代碼庫,我有:

public interface I1{ 

    public static interface I2 { 
     public void doSomething(); 
    } 

    //some other methods 

    public void myMethod(I2 myObject); 
} 

,並在不同的包中的一些其他類:

public abstract class SomeClass implements I2{ 
    //mandatory method... 
} 

現在,我的問題是 - 「這真的是一個很好的設計把I2 in I1「?

編輯:

public interface XClientSession { 
static public interface OnQueryResultSentListener { 

     public void onQueryResultSent(XQueryResult result); 
    } 
public void setOnQueryResultSentListener(OnQueryResultSentListener listener); 

} 

/而在不同的文件我有...

public abstract class XAppAgentBase extends IntentService 
    implements XClient, OnQueryResultSentListener { 
    } 
+0

@Maroun:感謝編輯:) – TheLostMind

+0

你確定SomeClass實現「I2」嗎?我希望它必須實現「I1.I2」來引用內部接口。 –

+0

@TheLostMind您可以顯示接口和方法的實際名稱,而不是轉述您的代碼嗎?這可能會使問題(和答案)更相關。 – mrjink

回答

1

不需要爲內部接口使用靜態關鍵字,因爲接口中聲明的接口默認爲靜態,類似於說接口中定義的變量默認爲公共和靜態。

這是一個很好的設計嗎? - 取決於爲其創建的設計。您的代碼將I2接口的可訪問性限制爲只有I1接口可訪問的那部分代碼。

+0

是的..我知道靜態是多餘的..而且我也知道它的有效性..我的觀點是 - 它是否好?..它會在未來造成任何問題嗎?它可以在未來破壞代碼/設計嗎? – TheLostMind

0

在java中是絕對有效的內另一

定義一個接口,是一個編碼方式說接口I2是否存在要用在I1(或者它們是相互關聯的)

+1

我的問題是:「保持I2在I1「在我的具體情況下是一個優勢?這是一個很好的設計嗎?我知道它的有效性.. – TheLostMind