2013-06-18 79 views
4

這是我在這裏問的第一個問題,所以我可能會做一些錯誤的事情。Java聲明一個實現接口的變量

我想聲明一個變量,我知道它是一個實現接口的類。

private <T extends Executable> T algorithm; 

這是我試圖達到的目標

回答

6

您不必爲此使用泛型。下面將任何子類/執行可執行的工作:

private Executable algorithm; 
3

在字段聲明不能引入類型參數。它必須是由班級本身引入的。

例如

public class MyClass<T extends Executable> { 
    private T algorithm; 
+0

謝謝,解決了這個問題。會投票,但我沒有15代表 – MattiasDC

+0

但這也綁定到該類的類。所以,可能不是完美的解決方案。參見另一個解決方案,這裏應該更適用。 –

+0

@RohitJain:你說得對。但是,這只是爲了澄清關於聲明類型是類型參數的字段的疑問。 –

3

只是聲明,要麼作爲接口,或者是看到這個類有反正來實現該接口的類。取決於你需要它的方式。 但你必須像這樣分解實例變量。

private YourInterfaceName variablename; 
private ClassName variablename; 

和更高版本在構造函數中啓動它們。

也許這個toutorial可以幫助你瞭解更多的變量。