我正在實現一個併發的循環隊列,這個隊列使用在隊列頭部和尾部使用單獨的鎖 的數組。隊列中的每個節點如下所示:通用節點陣列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