【发布时间】:2013-10-20 13:59:30
【问题描述】:
我正在根据一个使用单独锁的数组来实现一个并发循环队列 在队列的头部和尾部。队列中的每个节点如下所示:
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<?>
我的问题是初始化泛型对象数组的正确方法是什么?
【问题讨论】:
-
也许这个问题有帮助:stackoverflow.com/questions/2927391/…
-
How to: generic array creation 的可能重复项,请参阅已接受的答案。