我有一個包含數組的對象,但數組的類型每次都會有所不同。我們如何使用Java中的泛型類型和基本類型工作
我可以做類似
class MyObject<T>
{
public T [] data;
}
的事情是,這不符合基本類型的工作(INT,雙,...),這讓我與對象(整數,雙工作... )。
有什麼辦法可以避免這種情況?
感謝adavnce
我有一個包含數組的對象,但數組的類型每次都會有所不同。我們如何使用Java中的泛型類型和基本類型工作
我可以做類似
class MyObject<T>
{
public T [] data;
}
的事情是,這不符合基本類型的工作(INT,雙,...),這讓我與對象(整數,雙工作... )。
有什麼辦法可以避免這種情況?
感謝adavnce
你應該知道,autoboxing in Java可以做你尋找什麼。 從鏈接請參閱此代碼例如:
// List adapter for primitive int array
public static List<Integer> asList(final int[] a) {
return new AbstractList<Integer>() {
public Integer get(int i) { return a[i]; }
// Throws NullPointerException if val == null
public Integer set(int i, Integer val) {
Integer oldVal = a[i];
a[i] = val;
return oldVal;
}
public int size() { return a.length; }
};
}
即get()
方法返回一個普通的舊數據類型int
被自動轉換成一個Integer
。同樣,set()
方法採用Integer
並在數組中分配一個int
元素。
自動裝箱不是一個直接明顯的功能,但它處理自動對象創建。
您不能在泛型中使用基元,就像在C++中使用模板一樣。
如果你想要一個使用原語的集合,我建議你看看http://trove.starlight-systems.com/你可以傳遞這個集合類型作爲泛型的一部分。即不是傳遞基元類型,而是傳遞集合類型。
MyObject<List<String>> containsStrings = ...
MyObject<TIntArrayList> contains_ints = ...
這是不可能的。將原始數組轉換爲它們的OO等價物。
+1。偉大的圖書館! – 2011-05-06 11:21:54