2016-08-19 94 views
0

我試圖做到以下幾點:定義一個封裝接口類型,並有一個返回材料包裹的計算方法,但它不工作:如何定義一個通用包裝接口類型並將其用作java中的方法返回類型?

public interface Wrapper<T> { 
} 

public interface Calculator<WrapperType extends Wrapper<?> { 
    <T> WrapperType<T> calculate(Supplier<T> calculator); 
} 

的錯誤是一樣的東西「類型的包裝不有類型參數「。這在Java中是可行的嗎?

+2

你準備怎麼做?類似於'公共界面計算器 {0}包裝計算(供應商計算器);對我來說似乎更直觀。 –

+0

我希望計算器能夠計算通用輸出。包裝是一種包含輸出和附加信息(錯誤代碼,錯誤消息,計算過程中的異常等)的對象。 – Pinch

+0

你說錯誤是「類似的東西」「類型包裝器沒有類型參數」。你能發佈實際的錯誤信息嗎? –

回答

2

這不會像這樣編譯。你不能有泛型這麼多的水平在Java中,你將不得不決定

之間

public interface Calculator<T> { 
    Wrapper<T> calculate(Supplier<T> calculator); 
} 

public interface Calculator<T, WrapperType extends Wrapper<T>> { 
    WrapperType calculate(Supplier<T> calculator); 
} 
後者提供的額外的複雜性爲代價更大的靈活性。

+0

你能解釋一下關於「你不能在java中有這麼多的通用性」嗎? –

+0

我的意思是,如果'X'是一個通用類型,你永遠不會寫'X ' – Dici

相關問題