所以我有一个包含一个arraylist的类和一个定义一个对象的第二个类。我有一个第三类实例化第一个,然后实例化第二个多次传递第一个实例作为参数 - 每次第二个实例化它应该调用第一个方法将自己添加到arraylist。 / p>
我在调用第一个方法时遇到错误,虽然在令牌错位的构造上说语法错误。我的代码是:
第一堂课:
public class One {
private ArrayList<Two> list;
One(){list = new ArrayList<Two>();}
public void add(Two TwoInstance){
list.add(TwoInstance);
}
}
第二课:
public class Two {
private String a = null;
private String b = null;
private long c = 0;
private int d = 0;
private int e = 0;
private One OneInstance;
Two(One oneInstance, String a, String b, long c, int d, int e)
{this.oneInstance = oneInstance; this.a = a; this.b = b; this.c = c; this.d = d; this.e = e;}
oneInstance.add(this);
}
答案 0 :(得分:3)
错误是因为你已经关闭了你在这里提到的构造函数(检查大括号)
Two(One oneInstance, String a, String b, long c, int d, int e)
{this.oneInstance = oneInstance; this.a = a; this.b = b; this.c = c; this.d = d; this.e = e;}
和块/方法/构造函数之外的可执行代码是不允许的,因此这行
oneInstance.add(this);
会抛出错误。在构造函数中移动上面的行,如下所示:
Two(One oneInstance, String a, String b, long c, int d, int e)
{
this.oneInstance = oneInstance;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
oneInstance.add(this);
}
只是一个建议:更好的缩进可以帮助您轻松捕获语法错误。
答案 1 :(得分:1)
如果由于某种原因,您不希望您的代码在构造函数中(例如,如果您要添加更多构造函数,并且您希望它运行所有构造函数)或者一个方法,你必须用花括号括起来:
{
oneInstance.add(this);
}
但是这个名为instance initializer的功能在Java中很少使用。通常没有必要。