我们如何在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等价物