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()这样的函数中,那么它可以完美地编译,没有错误。
知道发生了什么事吗?如何在不创建函数的情况下初始化对象数组?
答案 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)