Java 有没有办法初始化类型安全的通用数组?

标签 java generics

我有以下代码

public class Container<T> {
    private T element;
    private T[] tarray;

    public T getElement() {
        return element;
    }

    public void setElement(T element) {
        this.element = element;
    }

    public void add(T element) {
        tarray[0] = element;
    }

    public void CreateArray(int size) {
        //Can this be cleaned up better?
        tarray = (T[]) new Object[size];
    }

    public T get() {
        return tarray[0];
    }

    public Container(T someElement) {
        this.element = someElement;
    }

    public Container() {
    }

    public static void main(String[] args) {
        Container<String> myContaier1 = new Container<String>();
        myContaier1.setElement("Hello");
        myContaier1.CreateArray(1);
        myContaier1.add("GoodBye");
        System.out.println(myContaier1.get());
    }
}

有没有办法初始化类型安全的泛型数组?

最佳答案

除非你提供具体化的T,否则没有办法。以实际 Class<T> 的形式表示特定值 T 的对象。这是因为数组类型具体化的,而泛型类型则不是。

关于Java 有没有办法初始化类型安全的通用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820038/

相关文章:

java - Selenium java 文件下载不适用于 Chrome 版本 75

java - 通用双向链表实现

java - 将引用类型作为参数传递并使用泛型

Swift 创建函数闭包,支持缩短的美元符号语法

java - 如何使用 JNI 获取浏览器上当前 Activity 选项卡的进程 ID

java - 如何通过 fx :id 在 Scene Builder 中查找元素

java - 随时间绘制方法调用图的工具

java - Apache Spark 驱动内存

c# - C# 中的类模板实现 shim

Swift - 泛型函数