Как переопределить toString и распечатать собственный тип класса ArrayList

Самый близкий, который я могу найти, это этот поток: Как распечатать значение содержимого массива в моем логарифме?

Однако, когда я пытаюсь переопределить вывод, возникает ошибка: Метод toString(long[]) в типе Arrays неприменим для аргументов (список)

// Обновление: оказывается, мне не нужен Arrays.toString в System.out.println. Итак, позвольте мне изменить свой вопрос на: зачем мне вообще нужно это переопределение в классе Interval? Я заметил, что без этого я получу вывод следующим образом:

[Interval@6d06d69c, Interval@7852e922, Interval@4e25154f, Interval@70dea4e]

Вот мой код:

 public static void main (String [] args) {
     List<Interval> intervals = new ArrayList<Interval>();
     intervals.add(new Interval(1,3));
     intervals.add(new Interval(2,6));
     intervals.add(new Interval(8,10));
     intervals.add(new Interval(15,18));
     System.out.println(Arrays.toString(intervals));
 }

Вот мой интервальный класс:

public class Interval {
    int start;
    int end;
    Interval() {start = 0; end = 0;}
    Interval(int s, int e) {
    start = s;
    end = e;
    }
    @Override
    public String toString() {
        return "[ " + start + ", " + end + "] ";
    }
}

person Patrick    schedule 31.05.2016    source источник
comment
Зачем преобразовывать список в массив? Просто распечатайте список напрямую   -  person aviad    schedule 31.05.2016
comment
Просто напечатайте это так: System.out.println(intervals); и вы получите результат, соответствующий вашим ожиданиям.   -  person Kenny Tai Huynh    schedule 31.05.2016
comment
Пожалуйста, не редактируйте свой вопрос, чтобы задать новый, как только будет дан ответ на исходный. Если у вас есть другой вопрос, создайте новый пост и задайте его.   -  person azurefrog    schedule 31.05.2016


Ответы (1)


Проблема в том, что Arrays.toString(...) ожидает массив для ввода, а не список.

person Grayson    schedule 31.05.2016
comment
Хорошо, я немного потерялся здесь. Хотя причина, по которой я сделал эту вещь Override toString, заключается в том, что мне нужно использовать ее в System.out.println. Итак, позвольте мне изменить свой вопрос на: Почему без этого Override, когда я делаю System.out.println, он дает мне [Interval@6d06d69c, Interval@7852e922, Interval@4e25154f, Interval@70dea4e] - person Patrick; 31.05.2016
comment
@Patrick System.out.println() неявно вызывает toString() для переданного объекта. - person shmosel; 31.05.2016