【问题标题】:How to create a safe generic array object in java? [duplicate]如何在 java 中创建一个安全的泛型数组对象? [复制]
【发布时间】:2019-02-03 15:16:13
【问题描述】:

嘿,这是我的第一篇文章,我有这个问题 如您所见,这是所需的方法enter image description here

所以我尝试创建一个数组,但显示异常 那么有什么建议吗?

这是我的代码

public class GArrayFactory {

// Create and return an array of size n

public static <T extends Comparable<T>> GArray<T>[] getGArray(int n) {

    GArray<T>[] array = (GArray<T>[]) new Object[n];

    return array ;

这就是例外

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LGArray;
at GArrayFactory.getGArray(GArrayFactory.java:9)

【问题讨论】:

  • 看起来您在代码中打错了字。注意LGarray 而不是GArray
  • @Gendarme 不,这就是参考描述符的组成方式,即"L" + &lt;binary class name&gt; + ";"
  • 您附加的屏幕截图具有GArray&lt;T&gt; 返回类型,但不是GArray&lt;T&gt;[] 代码中的。需要哪一项?
  • 这也是一个很好的副本:stackoverflow.com/questions/529085/…
  • @Gendarme 他们尝试创建的数组的组件类型不是来自类型参数的类型..

标签: java arrays generics


【解决方案1】:

您可以使用此方法创建通用数组:

public class GArrayFactory<E> {

    private E[] array;

    public GArrayFactory(Class<E> clazz, int size) {
        final E[] array = (E[]) Array.newInstance(clazz, size);
        this.array = array;
    }

    public E[] getArray() {
        return array;
    }
}

进一步的解释可以找到here

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多