0

TestAddress.java

Address[] adrsarr = new Address[5];
        adrsarr[0] = new Address("B402", "3", "42", "Behind Sector 9",
                "New Delhi", "Delhi", "Delhi", "India", "232113");
        adrsarr[1] = new Address("B1", "2", "61", "Bb Road 2", "Mumbai",
                "Mumbai", "Maharashtra", "India", "1213");
        adrsarr[2] = new Address("AH2", "325", "98", "BPGC", "Goa", "Goa",
                "Goa", "India", "403726");
        adrsarr[3] = new Address("a222", "2", "81", "Sector market",
                "New Delhi", "Delhi", "Delhi", "India", "11a001");

Address.java には、型Address()とのコンストラクターがあります。Address(string, string, string, string, string, string, string, string, string)

この指定されたコードは、メインの TestAddress クラス内では機能しません。adrsarr を宣言している行でエラーが発生します。

- Syntax error on token ";", { expected after this token

しかし、buildArr() のような関数内に配置すると、問題なくコンパイルされ、エラーは発生しません。

何が起こっているのか分かりますか?関数を作成せずにオブジェクト配列を初期化するにはどうすればよいですか?

4

2 に答える 2

2

この指定されたコードは、メインの TestAddress クラス内では機能しません。adrsarr を宣言している行でエラーが発生します。

メソッド、コンストラクター、または初期化ブロックの外で配列を設定することはできません。

 public class Country {
    Address[] add = new Address[3];
    add[0] = new Address();// this would not **compile**, put it inside a constructor /method.

      {
           this.add[0] = new  Address();// populating inside an init block, works fine 
       }
      public country() {
        this.add[0] = new  Address(); //populating inside a constructor, works fine
       }
       public void method(){
         this.add[0] = new Address();//populating inside a method, works fine
        }
  }
于 2012-11-18T11:05:24.807 に答える
-1

初期化割り当てステートメントの代わりに配列初期化子を使用します。

Address[] add = { new Address(), new Adress(), new Adress() }; 

配列初期化子は、宣言内または配列作成式の一部としてのみ使用できます ( Java 言語仕様 - 第 10.6 章「配列初期化子」を参照) 。

于 2012-11-18T11:10:18.483 に答える