我正在实现一个并发的循环队列,这个队列使用在队列头部和尾部使用单独的锁 的数组。队列中的每个节点如下所示:通用节点阵列Java
private class Node<T>
{
public T item;
ReentrantLock lock = new ReentrantLock();
Node(){}
void lock() {lock.lock();}
void unlock() {lock.unlock();}
}
我无法在队列类的构造函数中创建队列。
public Queue(int capacity) {
items = (Node[]) new Object[capacity];//This line gives the problem
head = size = 0;
}
我已经找到了解决办法here,但是这个代码:
@SuppressWarnings("unchecked")
Node<T>[] slots = (Node<T>[]) new Node<?>[capacity];
提供了以下编译器错误:
Cannot create a generic array of Queue<T>.Node<?>
我的问题是什么是初始化数组的正确方法通用对象?
也许这个问题帮助:http://stackoverflow.com/questions/2927391/whats-the-reason-i-cant-create-generic-array-types-in-java – andreih
po可以复制[如何:泛型数组创建](http://stackoverflow.com/questions/529085/how-to-generic-array-creation),请参阅接受的答案。 – 2013-10-20 14:28:46