ジェネリックの使用中に配列を宣言して割り当てようとしていますが、これに少し問題があります。私は通常、ジェネリックを使って配列を割り当てることは不可能であることに気付きました。私はこの回避策を見つけましたが、それは私にとってはうまくいかないようです。 Array.newInstance(c、capacity)に到達すると、NullPointerExceptionを出力します。私は、このコードが配列を宣言することを期待しています。なぜこれが期待されているように機能しないのでしょうか?あなたの根本的な問題の対処ジェネリックでの配列の宣言と割り当て
public class MyHeap<T extends Comparable<T>> implements Heap<T> {
Class<T> type;
T[] heap;
int size;
int capacity;
MyHeap(int x){
capacity = x;
size = 0;
arraySet(type, capacity);
}
private void arraySet(Class<T> c, int capacity){
@SuppressWarnings("unchecked")
final T[] heap = (T[]) Array.newInstance(c, capacity);
this.heap = heap;
}
}
'type'が' null'なので'List'を使うことができます。コンポーネントタイプへの参照は必要ありません。 –
ああ!私はそれを認識しませんでした。しかし、私はそれをどのように設定するのですか?残念ながら私は配列でなければなりません。私は私のデータ構造とアルゴリズムクラスのラボの一部としてこれをやっていて、配列を使うにはこの実装が必要です – Deezer
なぜなら 'Comparable []'を使わないのはなぜですか?あなたはすでにそれがコンポーネント型であることを知っています: 'Comparable'。 –