使用数组的通用队列

时间:2014-01-09 16:53:01

标签: java arrays generics queue

嗨,我正在为即将进行的测试进行修订,我遇到了一个问题,我遇到了麻烦。

我必须修改此代码http://pastebin.com/ED2A7VWy以提供Queue的通用实现。问题是Queue使用了一个数组,由于某种原因,泛型似乎不能很好地与数组一起使用。我试过了:

public class Queue<E>{
    private E[] eArray = new E[5];
...

}

但这似乎不起作用。

2 个答案:

答案 0 :(得分:2)

改为投射数组:

@SuppressWarnings("unchecked")
private E[] eArray = (E[])new Object[5];

您可以阅读here为什么不允许这样做。

答案 1 :(得分:-2)

你可以这样做 - 不禁止警告 - 没有施法:

public class Objects {

    // Call without a second parameter to get an array of the specified type with the specified length.
    public static <T> T[] newArray(int length, T... empty) {
        return Arrays.copyOfRange(empty, 0, length);
    }
}

public class Test<T> {

    public void test() {
        // Only specify the length - Java creates an empty one for the varargs param.
        T[] demo = Objects.<T>newArray(5);
        System.out.println(Arrays.toString(demo));
    }