我们如何在Java中使用泛型类型和原语
我有一个包含数组的对象,但是每次数组的类型都会不同 我可以做类似的事情我们如何在Java中使用泛型类型和原语,java,templates,generics,types,primitive,Java,Templates,Generics,Types,Primitive,我有一个包含数组的对象,但是每次数组的类型都会不同 我可以做类似的事情 class MyObject<T> { public T [] data; } 类MyObject { 公共数据; } 问题是,这不适用于基本类型(int,double,…),它使我可以处理对象(Integer,double…) 有没有办法避免这种情况 非常感谢你,你应该意识到,这可能正是你想要的。 请参见以下链接中的代码示例: // List adapter for primitive int ar
class MyObject<T>
{
public T [] data;
}
类MyObject
{
公共数据;
}
问题是,这不适用于基本类型(int,double,…),它使我可以处理对象(Integer,double…)
有没有办法避免这种情况
非常感谢你,你应该意识到,这可能正是你想要的。
请参见以下链接中的代码示例:
// 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; }
};
}
//基本int数组的列表适配器
公共静态列表asList(最终int[]a){
返回新的AbstractList(){
公共整数get(int i){返回一个[i];}
//如果val==null,则引发NullPointerException
公共整数集(整数i,整数val){
整数oldVal=a[i];
a[i]=val;
返回oldVal;
}
public int size(){return a.length;}
};
}
该get()
方法返回一个普通的旧数据类型int
,该数据类型自动转换为整数。类似地,set()
方法获取一个Integer
并在数组中分配一个int
元素
自动装箱并不是一个显而易见的功能,但它确实可以处理自动对象创建。您应该知道,它可能正是您想要的。
请参见以下链接中的代码示例:
// 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; }
};
}
//基本int数组的列表适配器
公共静态列表asList(最终int[]a){
返回新的AbstractList(){
公共整数get(int i){返回一个[i];}
//如果val==null,则引发NullPointerException
公共整数集(整数i,整数val){
整数oldVal=a[i];
a[i]=val;
返回oldVal;
}
public int size(){return a.length;}
};
}
该get()
方法返回一个普通的旧数据类型int
,该数据类型自动转换为整数。类似地,set()
方法获取一个Integer
并在数组中分配一个int
元素
自动装箱不是一个显而易见的特征,但它可以处理自动对象创建。
< P>不能在泛型中使用原语,就像C++中的模板一样。
如果您想要一个使用原语的集合,我建议您看看,您可以将此集合类型作为泛型的一部分进行传递。i、 e.传递集合类型,而不是传递基元类型
MyObject<List<String>> containsStrings = ...
MyObject<TIntArrayList> contains_ints = ...
MyObject包含字符串=。。。
MyObject包含_int=。。。
不能在泛型中使用图元,就像C++中的模板一样。
如果您想要一个使用原语的集合,我建议您看看,您可以将此集合类型作为泛型的一部分进行传递。i、 e.传递集合类型,而不是传递基元类型
MyObject<List<String>> containsStrings = ...
MyObject<TIntArrayList> contains_ints = ...
MyObject包含字符串=。。。
MyObject包含_int=。。。
这是不可能的。将基元数组转换为它们的OO等价物。这是不可能的。将基元数组转换为它们的OO等价物