私は、一般的なクラスを持っているJavaのジェネリッククラスのオブジェクト配列のインスタンス化
public class GenericBookDet<K,V>
{
private K bkId;
private V bkDescription;
public GenericBookDet()
{
this.bkId = null;
this.bkDescription = null;
}
public GenericBookDet(K bkId, V bkDescription)
{
this.bkId = bkId;
this.bkDescription = bkDescription;
}
...
//getter methods
//setter methods
}
私は別のクラスでは、このクラスの配列を作成し、新しいブックを追加したいです。
public class GenericBookStore<K,V>
{
static int noOfbooks = 0;
GenericBookDet<K,V>bk1[];
public int addBook(K key, V bkDescription)
{
this.bk1[noOfbooks] = new GenericBookDet<K, V>(key,bkDescription);
this.bk1[noOfbooks].setbkDescription(bkDescription);
++noOfbooks;
return noOfbooks;
}
}
私は、次のようにaddBookメソッドを呼び出しています:
GenericBookStore<String, String> bkStore = new GenericBookStore<String,String>();
bkStore.addBook("1010", "ABCD");
しかし、これはaddBook方法の最初の行にNullPointerExceptionがスローされます。
bkDescriptionフィールドにStringまたはObjectを渡すことができる汎用ブック配列をGenericBookStoreに作成したいと思います。あなたはあなたがパラメータ化された型の配列を作成することはできませんGenericBookDet<K,V>bk1[]
GenericBookDet<K,V>bk1[] = new GenericBookDet[10]
を初期化していなかったので
警告メッセージが表示されます。私はジェネリックアレイを作成する良い方法がないと思う。リストを使用することを検討してください(特にあなたがそれを成長させたいと思われるので)。 – Thilo