2011-05-06 94 views
0

我有一個包含數組的對象,但數組的類型每次都會有所不同。我們如何使用Java中的泛型類型和基本類型工作

我可以做類似

class MyObject<T> 
{ 
    public T [] data; 
} 

的事情是,這不符合基本類型的工作(INT,雙,...),這讓我與對象(整數,雙工作... )。

有什麼辦法可以避免這種情況?

感謝adavnce

回答

2

你應該知道,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元素。

自動裝箱不是一個直接明顯的功能,但它處理自動對象創建。

1

您不能在泛型中使用基元,就像在C++中使用模板一樣。

如果你想要一個使用原語的集合,我建議你看看http://trove.starlight-systems.com/你可以傳遞這個集合類型作爲泛型的一部分。即不是傳遞基元類型,而是傳遞集合類型。

MyObject<List<String>> containsStrings = ... 
MyObject<TIntArrayList> contains_ints = ... 
+1

+1。偉大的圖書館! – 2011-05-06 11:21:54

0

這是不可能的。將原始數組轉換爲它們的OO等價物。