2011-12-12 39 views
2

我剛剛讀了一本書中的這段代碼。可以引用一個接口= null?

public class AdapterWrapper implements ListAdapter { 
    ListAdapter delegate=null; 

    // other code 

} 

ListAdapter是一個公共接口和接口的參考了並分配NULL。這有效嗎?我真的很困惑。

回答

4

是的,它是有效的。這僅表示delegate是對ListAdapter接口的參考,它目前指向null

以後,您可以使它指向任何類實現ListAdapter接口,如SimpleCursorAdapterWrapperListAdapter或任何你想要的其他實現。

如果您不提前知道運行時將會使用什麼類,那麼使用接口類型作爲參考很有用。所以你只需使用指向一個接口的引用。

2

變量有一個值,它是一個空引用。這沒有什麼問題。

任何引用類型變量的值是對某個兼容類型的實例的引用,或者是null - 對於類和接口都是相同的。

+0

ErichLancaster:是的,接口永遠不會直接作爲對象存在。對象總是由一些可能實現接口的類創建的。因此,您的接口變量將包含對實現此接口的類的某個對象的引用,或者爲null。 –

2

Interface(Java)只是引述維基百科的位置:

在Java對象的引用可以被指定爲接口類型; 在這種情況下,它們必須爲空或綁定到實現接口的對象。

所以代碼似乎有效的定義。

相關問題