java - 通过自己的类创建通用数组

标签 java

要创建通用数组,我也在许多网站(包括这个网站)中看到了以下建议。但是,我想知道为什么我们在数组创建中不直接使用泛型类。是什么原因促使我们不使用下面的数组创建方法?

目前使用什么

public class X<T>  {

    private Y<T> tTypeClass = null;

    public T[] Array() {       
        T[] array = (T[]) Array.newInstance(tTypeClass.getObject().getClass(),4); 
    }
}

为什么我们不使用

public class X<T>  {

    public T[] arrayCreation() {       
        T[] array = (T[]) Array.newInstance(this.getClass(),4); 
    }
}

最佳答案

您不能编写像 T[] arr = new T[xx] 这样的代码,因为 Java 泛型是类型删除的。运行时在运行时不知道 T 是什么,因为 Java 编译器在编译时用强制类型转换替换了所有泛型。

另外,

public class X<T>  {

    public T[] arrayCreation() {       
        T[] array = (T[]) Array.newInstance(this.getClass(),4); 
    }
}

将导致 ClassCastException,因为它创建一个 X[] 数组并尝试将其转换为 T[]

关于java - 通过自己的类创建通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011572/

相关文章:

java - 多次查询一个巨大的集合。有没有更高效的解决方案?

c++ - try/catch block 中的完整代码

java - 用于从特定文件中提取信息的正则表达式

Java - 错误 : cannot find symbol - presumably scoping issue

java - 在java中使用this保存多个对象引用

Java套接字客户端服务器响应应用程序

java - 从仅包含重复值的映射中提取子映射

java - Hibernate中如何设置外键实体

java - 为什么以及如何应用阈值来获得更好的匹配特征

java - Swing:如何将自定义光标设置为透明?