Вывести toString () из отдельных классов

1

У меня есть два класса, каждый из которых имеет один 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();                             
}

Class2:

@Override
public String toString() {
    return getMethod3() + getMethod4();
}

Одна из альтернатив, о которых я думал, заключалась в добавлении Class2.toString() в Class1 (я не мог заставить его работать):

@Override
public String toString() {
    return getMethod() + getMethod2() + Class2.toString();                             
}

Еще одна идея, которую я имел, - просто добавить геттеры прямо в toString в Class1 вместо использования toString (это тоже не сработало):

@Override
public String toString() {
    return getMethod() + getMethod2() + Class2.getMethod3() + Class2.getMethod4();                             
}
Теги:
tostring

4 ответа

2

Вы не можете ссылаться на toString как это, потому что это не статический метод

Class2.toString();

Вам нужен объект класса Class2, чтобы использовать toString как:

class2Obj.toString();

Также это работает для Class2.getMethod3() и Class2.getMethod4

class2Obj.getMethod3();
1

Вы сначала решили добавить класс2 в строку, но не работали, потому что строка не является статическим методом, поэтому вы должны называть ее объектом. Я действительно не понимаю, почему вы не можете просто позвонить каждому по отдельности, но большинство ваших проблем связаны с попыткой сделать статические вызовы методам string. Я не был уверен в вашем вопросе, но если класс 2 расширяет класс 1, есть простое исправление: добавьте super.toString() в качестве первой строки класса 2 в строковый метод.

0

Я действительно не могу заставить его работать. Я создал объекты классов, но до сих пор нет прогресса. Возможно, это связано с тем, как я создаю свои объекты? У меня должны быть класс1-объекты в массиве и class2-objects в 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 printClass1(Class1[] class1s, int index){
    if (index == 0 || index == 1) {
        System.out.println(class1s[index].toString());
    }
}
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 в какой-то метод и вызвать его в своем главном :) также в toString или sth.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню