我想要两个toString(),并希望通过只调用其中一个来打印它们。 我必须将class1的对象作为Array,将class2作为ArrayList。
主:
public static void main(String[] args) {
Main main = new Main();
Class1 []class1 = new Class1[2];
ArrayList<Class2> class2List = new ArrayList<Class2>();
for(int i=0; i<class1.length; i++){
class1[i] = getClass1Obj();
class2List.add(getClass2Obj());
}
for(int i=0; i<class1.length; i++){
printClass1(class1, i);
}
}
public static void print(Class1[] cls1, int index){
System.out.println(cls1[index].toString());
}
的Class1:
private Class2 class2;
@Override
public String toString() {
return getMethod() + getMethod2() + class2.toString();
}
等级2:
@Override
public String toString() {
return getMethod3() + getMethod4();
}
这不起作用。可能是因为我创建不同对象的方式?
答案 0 :(得分:0)
创建class1实例
时,应该添加对class2的引用for(int i=0; i<class1.length; i++){
class1[i] = getClass1Obj();
Class2 class2 = getClass2Obj();
class1[i].setClass2(class2);
class2List.add(class2);
}
请记住创建一个setClass2方法
public setClass2(Class2 class2) { this.class2 = class2; }
这样,class1将引用class2并可以使用class2 toString