0

だから私はこのクラスのコンストラクターを持つ A を呼び出すとしましょう

       A(String someA, int someB , String[] someC)

そして別のクラスで、これをクラス変数として持つメインを作成しました

    private static String[] someC = new String[4];
    private static ArrayList<A> thisA;

次に、dat ファイルからいくつかの情報を抽出します

                someA= readFile.nextLine(); //some normal string such as  bob Billy
                someB= readFile.nextInt();   //some integer like 5
                unitCode[0] = readFile.next(); //some code such as HITHERE34
                unitCode[1] = readFile.next(); // all the 4 is the same style
                unitCode[2] = readFile.next();
                unitCode[3] = readFile.next();
         thisA.add(new A(someA,someB,unitCode); // create object and store into array list

これを実行してみましたが、 unitCode を出力すると nullPointerException エラーが発生し、代わりにアドレスが返されました。どうすればこれを修正できますか?

4

3 に答える 3

2

thisAのようなメソッドを実行する前に、リストを初期化する必要があります.add。初期化されたオブジェクトがない限り、コレクションのメソッドを実行できません。

thisA = new ArrayList<A>();

必要なエントリの数を見積もることができる場合 (ラウンド アバウト)、このコンストラクターに興味があるかもしれません。

thisA = new ArrayList<A>(120);

リストを初期化したら、要素を追加できます。

于 2013-10-19T17:15:20.607 に答える
2
private static ArrayList<A> thisA;

これはメンバーの宣言にすぎません。デフォルトでは、JVM は"thisA" (または任意の参照型メンバー) を null 値に初期化します。これを克服するには、手動で別のものに初期化する必要があります。

private static ArrayList<A> thisA = new ArrayList<A>();
于 2013-10-19T17:15:21.483 に答える