繁体   English   中英

我们如何使用Java中的泛型类型和原语

[英]How can we work with generic types and primitives in Java

我有一个包含数组的对象,但是数组的类型每次都会不同。

我可以做类似的事情

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

事实是,这不适用于基本类型(int,double,...),并且使我可以使用Objects(Integer,Double ...)。

有什么办法可以避免这种情况?

谢谢

您应该意识到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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM