Как должны быть написаны методы toString() в ClassA и ClassB, чтобы использовать преимущества естественного метода toString() в ClassB?

#java

#java

Вопрос:

 import java.util.ArrayList;

public class ClassA {
 ArrayList<ClassB> list = new ArrayList<ClassB>();

 public static void main(String args[]) {
     ClassA y = new ClassA();
     int[] v = { 4, 3, 7, 5, 99, 3 };
     for (int m : v)
         y.list.add(new ClassB(m));
     System.out.println(y);
 } // end main

} // end class ClassA

class ClassB {
 int x;

 ClassB(int a) {
     x = a;
 }
} // end ClassB
  

Как должны быть написаны методы в ClassA и ClassB, чтобы выдавать указанный результат и использовать преимущества естественного метода toString в ClassB? (Предполагая, что это должен быть ClassA?)
Результат должен быть следующим: 4 3 7 5 99 3

Для класса A я внес следующие изменения.

 import java.util.ArrayList;
public class ClassA {
    ArrayList<ClassB> list = new ArrayList<ClassB>();
    String numberList = "";
    public String toString() {
        for (ClassB object : list)
            numberList  = object   " ";
        return numberList;
    }
    public static void main(String args[]) {
        ClassA y = new ClassA();
        int[] v = {4, 3, 7, 5, 99, 3 };
        for (int m : v)
            y.list.add(new ClassB(m));
        System.out.println(y);
    } // end main
} // end class ClassA
  

Для класса B

 class ClassB {
    int x;
    ClassB(int a) {
       x = a;
    }
 
    public String toString() {
        return String.valueOf(x);
    }
} // end ClassB
  

Я, вероятно, сделал это неправильно, но у кого-нибудь есть лучшее представление об этом?

Комментарии:

1. Неясно, в чем на самом деле заключается ваша проблема, поскольку вы не реализовали toString() ни для одного класса и не описали, что «не работает» (предполагая, что вы их реализовали).

2. @Bohemian отредактировал то, что мне нужно вывести на терминал. Извините за это, спасибо.

3. Пожалуйста, покажите toString() реализации метода, с которыми у вас возникли проблемы.

Ответ №1:

Как только вы напишете .toString() метод в H2ClassB, тогда println в основном методе H2ClassA будет отображаться правильно.

Инструкция: System.out.println (y); попытается отобразить ArrayList, у которого есть свой собственный toString метод, и вывод будет выглядеть как [stuff, stuff, stuff, stuff] , но ‘stuff’ будет результатом toString ваших элементов вашего списка, которые являются объектами H2ClassB. Без пользовательского toString вы видите двоичные ссылки на его месте.