次のコードを Java で動作させる方法はありますか?
public class RandomizedQueue<Item> implements Iterable<Item> {
private static final int ARRAYSIZE = 8; // default array size
private Node[] nodeArray; // contains pointers to the randomized nodes
private int size; // current size of queue
private class Node
{
private Item item;
private Node next;
private Node previos;
}
@SuppressWarnings("unchecked")
public RandomizedQueue() // construct an empty randomized queue
{
nodeArrays = (Node[]) new Object[ARRAYSIZE]; // fix this and everything works!
}
// unimportant randomized queue implementation details
// ...
}
実行時に nodeArray 初期化行でクラッシュし、次のエラーが表示されます。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LRandomizedQueue$Node;
at RandomizedQueue.<init>(RandomizedQueue.java:18)
at Subset.main(Subset.java:6)
.
問題は、ArrayList<> などのライブラリ データ構造を使用できないことです。これは、カスタムのサイズ変更ルールが必要になるためです。さらに、ArrayList アナログを自分で実装することはできません (私のタスクでは追加のクラスは許可されていません)。
Eclipse でコードnodeArray = new Node[ARRAYSIZE];
がコンパイルされず、エラーが発生しますCannot create a generic array of RandomizedQueue<Item>.Node
。