从单独的类打印toString()

时间:2014-03-16 15:05:02

标签: java tostring

我有两个类,每个类都有一个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();                             
}

4 个答案:

答案 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());
    }
}