我想用兩種泛型類型創建一個Java類。兩種類型的泛型類
public class BinaryContractInfo<T, U>
的事情是,我想向U
是相同類型的T
或T[]
。
基本上我想知道,如果T extends T[]
,反之亦然。然後我可以做類似
public class BinaryContractInfo<T, U extends T[]>
這可能嗎?有沒有辦法做到這一點?
我想用兩種泛型類型創建一個Java類。兩種類型的泛型類
public class BinaryContractInfo<T, U>
的事情是,我想向U
是相同類型的T
或T[]
。
基本上我想知道,如果T extends T[]
,反之亦然。然後我可以做類似
public class BinaryContractInfo<T, U extends T[]>
這可能嗎?有沒有辦法做到這一點?
不能指定類型爲是T
或T[]
相反,你可以使用可變參數
public void method(T... ts);
可以稱之爲要麼
method(t);
method(t1, t2, t3);
T[] ts =
method(ts);
對於返回類型,你可以指定
public T[] method();
如果調用者假定只有一個回報值
T t = method()[0];
不,AFAIK,你不能那樣做,更不用說數組和泛型不能很好地協作。最簡單的事情是將包裝數組中集合類型(List
或非常瘦包裝過的數組),如果你被允許這樣做就是。
而且,爲什麼不直接在代碼中使用T[]
直接而不必爲它單獨的類型參數的?如果你不能,那就解釋爲什麼你不能。
因爲它也可以是'T'而不是'T []'。 –
那麼創建一個新的類型來抽象'T'和'T []'之間的區別並接受'T'類型的可變參數?另外,您是否可以使用客戶端代碼更新您的問題,即顯示如何使用二元合約的示例代碼片段? –
爲什麼願意這樣做。對不起,但它對我來說並不合乎邏輯。你能給我們更多關於這背後推理的信息嗎? –
那麼我將不得不比較這兩種類型。 –
你可以簡單地使用一個泛型類型,並有方法重載,一個接受類型作爲參數,另一個接受類型的數組?這兩種方法中的代碼將會有所不同,所以我看不出你最初嘗試做什麼的優勢。 –