2011-07-16 127 views
1

我想用兩種泛型類型創建一個Java類。兩種類型的泛型類

public class BinaryContractInfo<T, U> 

的事情是,我想向U是相同類型的TT[]

基本上我想知道,如果T extends T[],反之亦然。然後我可以做類似

public class BinaryContractInfo<T, U extends T[]> 

這可能嗎?有沒有辦法做到這一點?

+0

爲什麼願意這樣做。對不起,但它對我來說並不合乎邏輯。你能給我們更多關於這背後推理的信息嗎? –

+0

那麼我將不得不比較這兩種類型。 –

+0

你可以簡單地使用一個泛型類型,並有方法重載,一個接受類型作爲參數,另一個接受類型的數組?這兩種方法中的代碼將會有所不同,所以我看不出你最初嘗試做什麼的優勢。 –

回答

3

不能指定類型爲是TT[]相反,你可以使用可變參數

public void method(T... ts); 

可以稱之爲要麼

method(t); 
method(t1, t2, t3); 
T[] ts = 
method(ts); 

對於返回類型,你可以指定

public T[] method(); 

如果調用者假定只有一個回報值

T t = method()[0]; 
1

不,AFAIK,你不能那樣做,更不用說數組和泛型不能很好地協作。最簡單的事情是將包裝數組中集合類型(List非常瘦包裝過的數組),如果你被允許這樣做就是。

而且,爲什麼不直接在代碼中使用T[]直接而不必爲它單獨的類型參數的?如果你不能,那就解釋爲什麼你不能。

+0

因爲它也可以是'T'而不是'T []'。 –

+0

那麼創建一個新的類型來抽象'T'和'T []'之間的區別並接受'T'類型的可變參數?另外,您是否可以使用客戶端代碼更新您的問題,即顯示如何使用二元合約的示例代碼片段? –