从另一个类调用方法 - 给出语法错误

时间:2014-01-11 07:28:21

标签: java oop

所以我有一个包含一个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);
}

2 个答案:

答案 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中很少使用。通常没有必要。