我有一个包含数组的对象,但每次都会有不同的数组类型。
我可以做类似
的事情class MyObject<T>
{
public T [] data;
}
问题是这不适用于原始类型(int,double,...),它使我使用Objects(Integer,Double ...)。
有没有办法避免这种情况?
感谢adavnce
答案 0 :(得分: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
元素。
Autoboxing不是一个直接明显的功能,但它确实处理自动对象创建。
答案 1 :(得分:1)
您不能在泛型中使用基元,就像在C ++中使用模板一样。
如果你想要一个使用原语的集合,我建议你看一下http://trove.starlight-systems.com/你可以将这个集合类型作为泛型的一部分传递。即传递集合类型,而不是传递基本类型。
MyObject<List<String>> containsStrings = ...
MyObject<TIntArrayList> contains_ints = ...
答案 2 :(得分:0)
这是不可能的。将原始数组转换为它们的OO等价物。