相关疑难解决方法(0)

如何在Java中创建通用数组?

由于Java泛型的实现,您不能拥有这样的代码:

public class GenSet<E> {
    private E a[];

    public GenSet() {
        a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在保持类型安全的同时实现这一点?

我在Java论坛上看到了这样的解决方案:

import java.lang.reflect.Array;

class Stack<T> {
    public Stack(Class<T> clazz, int capacity) {
        array = (T[])Array.newInstance(clazz, capacity);
    }

    private final T[] array;
}
Run Code Online (Sandbox Code Playgroud)

但我真的不知道发生了什么.

java arrays generics reflection instantiation

1045
推荐指数
15
解决办法
74万
查看次数

错误:通用阵列创建

我不明白通用阵列创建的错误.
首先我尝试了以下内容:

  public PCB[] getAll() {
       PCB[] res = new PCB[list.size()];
           for (int i = 0; i < res.length; i++) {
               res[i] = list.get(i);
            }
       list.clear();
       return res;
}
Run Code Online (Sandbox Code Playgroud)


然后我尝试这样做:

PCB[] res = new PCB[100];
Run Code Online (Sandbox Code Playgroud)


我必须遗漏一些似乎正确的事情.我试着查一下,我真的做到了.没有任何东西在点击.


我的问题是:我该怎么做才能解决这个问题?


错误是:

.\Queue.java:26: generic array creation
PCB[] res = new PCB[200];
            ^
Note: U:\Senior Year\CS451- file      
uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Run Code Online (Sandbox Code Playgroud)

工具已完成,退出代码为1

java arrays generics class object

34
推荐指数
2
解决办法
9万
查看次数

标签 统计

arrays ×2

generics ×2

java ×2

class ×1

instantiation ×1

object ×1

reflection ×1