我有两个类,每个类都有一个toString()。在第三个类(Main)中,我想通过调用toString()之一来打印toString()中的信息。一些帮助太棒了!
主:
public static void print(Class1[] cls1, int index){
System.out.println(cls1[index].toString());
}
的Class1:
@Override
public String toString() {
return getMethod() + getMethod2();
}
等级2:
@Override
public String toString() {
return getMethod3() + getMethod4();
}
我想到的另一个选择是将Class2.toString()添加到Class1(我无法使其工作):
@Override
public String toString() {
return getMethod() + getMethod2() + Class2.toString();
}
我的另一个想法是将getter直接添加到Class1中的toString而不是使用toString(这也不起作用):
@Override
public String toString() {
return getMethod() + getMethod2() + Class2.getMethod3() + Class2.getMethod4();
}
答案 0 :(得分:2)
您不能像这样引用toString
,因为它不是静态方法
Class2.toString();
您需要Class2
类中的对象才能使用toString
,如:
class2Obj.toString();
这也适用于Class2.getMethod3()
和Class2.getMethod4
class2Obj.getMethod3();
答案 1 :(得分:1)
您首先想到将字符串2添加到字符串中并不起作用,因为字符串不是静态方法,因此您必须在对象上调用它。我不明白为什么你不能单独调用每一个,但是你的大部分问题都来自于尝试对to字符串方法进行静态调用。我不能确定你的问题,但是如果第2课扩展到第1级,则有一个简单的解决方法:将super.toString()
作为第2类的第一行添加到字符串方法。
答案 2 :(得分:0)
public Class1{
@Override
public String toString(){
return yourMethod();
}
}
public Class2 {
private Class1 class1;
//getters and setters
@Overrie
public String toString(){
return class1.toString() + yourMethodFromClass2();
}
}
public class MainClass{
public static void main(String[] args){
Class1 class1 = new Class1();
Class2 class2 = new Class2();
class2.setClass1(class1);
class2.toString();
}
}
现在你可以简单地将class2.toString放入某个方法并在你的main中调用它:)也可以在toString或sth。
答案 3 :(得分:0)
我真的无法让它发挥作用。我已经创建了类的对象,但仍然没有进展。它可能与我如何创建我的对象有关? 我必须在数组中包含class1对象,在arrayList中包含class2对象。
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 printClass1(Class1[] class1s, int index){
if (index == 0 || index == 1) {
System.out.println(class1s[index].toString());
}
}