2

C# 構造体を模倣するクラスを作成しました。

public class Favourite {
    protected  String favName;
    protected  String favText;
    protected String favDelay;
    protected GeoPoint favPoint;
    protected Uri favUri;
}

このクラスの配列を作成したい:

Favourite[] fav;

この配列にアクセスしようとすると:

fav[s].favName = bufr;

NullPointerException が発生します。 bufrデータが含まれています。次のコードとして配列にアクセスすることを追跡しました。

fav[s].favName = "";

NullPointerException も生成します。

私がやっていることは許可されているかどうかについてのいくつかの兆候を高低で検索しましたが、何も見つかりません.

私の質問は次のとおりです。

クラス オブジェクトの配列を作成できますか? もしそうなら、その配列をどのように参照しますか?

変数の 5 つの個別の配列を使用してこれを行うことができることはわかっていますが、それらをクラスに入れると、より良い構造が得られ、よりエレガントになると思います (エレガンスが好きです)。

4

3 に答える 3

8

問題はそれfav[s]がnullであることです。

C# についてはわかりませんが、Java では、配列の要素を個別に初期化する必要があります。配列を宣言して自動的に入力することはできません。

ループして、新しいオブジェクトfavで埋める必要があります。Favourite

fav[s] = new Favourite()を初めて使用するときに割り当てるか、fav[s]実行して一度にすべて初期化します

for (int i = 0; i < fav.length; i++) {
  fav[s] = new Favourite();
}
于 2012-06-28T16:37:04.497 に答える
3
Favourite[] fav = new Favourite[23]; // Allocate an array of 23 items

これで23個になりました!

于 2012-06-28T16:38:45.910 に答える
1

配列に項目を入れる必要があります。宣言された配列では、各スロットに単に null が含まれています。のようなことをする必要がありますfav[s] = new Favourite()

于 2012-06-28T16:37:25.090 に答える