Метод toString для конструктора varargs - PullRequest
2 голосов
/ 17 марта 2010

У меня есть конструктор varargs, подобный этому:

public class Sentence {

   public String[] str;

      public Sentence(Object... text){

        StringBuilder sb = new StringBuilder();
        for (Object o : text) {
          sb.append(o.toString())
          .append(" ");
        }
        System.out.println(sb.toString());

     }

 }

Класс может принимать различные типы данных через этот конструктор (в том числе целые, строки и объекты предложения). Как создать правильный метод toString для такого класса?

Ответы [ 2 ]

2 голосов
/ 17 марта 2010

Не совсем точно, что вы пытаетесь достичь, но как метод toString () ...

Возвращает строковое представление объект

... Полагаю, я бы сохранил результат вашего sb.toString() вызова как строковую переменную-член (скажем, private String asString) и вернул бы его в методе toString(), переопределяющем метод в Object:

public String toString() {
  return this.asString;
}
0 голосов
/ 17 марта 2010

Вы не можете напечатать предложение в toString, потому что вы можете получить бесконечный цикл, если вы инициализируете 2 объекта Senence друг другом.

Итак, выведите все строки и объекты и, если возможно, некоторые данные из объекта Sentence или только «объект 1 предложения», чтобы указать, что они также передаются в качестве параметра init.

...