无法理解有关Object数组的错误

时间:2012-11-18 10:54:17

标签: java

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()这样的函数中,那么它可以完美地编译,没有错误。

知道发生了什么事吗?如何在不创建函数的情况下初始化对象数组?

2 个答案:

答案 0 :(得分: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
        }
  }

答案 1 :(得分:-1)

使用Array Initializer代替初始化赋值语句。

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

数组初始值设定项只能用于声明或数组创建表达式的一部分(参见Java Language Specification - Chapter 10.6 "Array Initializers

相关问题