Рассматривая ваши вопросы и комментарии, я думаю, что ваше замешательство в конечном итоге проистекает из того, что вы не знаете, как работает печать. В общем, в таких случаях я рекомендую получить источники JDK и просто заглянуть внутрь.
В этом случае мы бы сначала пойти в System
класс и проверить out
элемент (потому что println
вызывается System.out
):
public final class System {
...
public final static PrintStream out = null;
Так как мы теперь знаем, что out
является PrintStream
, давайте проверим из этого класса:
public class PrintStream extends FilterOutputStream
implements Appendable, Closeable
{
...
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
(мы знаем, что это вызов этого метода, так как другие println
подписи не совпадают с ти ре List
)
ОК, поэтому мы видим, что println
преобразует данное Object
(ваш List
в данном случае) к String
с помощью String.valueOf(Object)
. Давайте проверим, что метод:
public final class String {
...
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
Итак, теперь мы знаем, что ваши List
«ы toString()
метод используется для генерации выходных данных. Как указывали другие, в ArrayList
переопределяется, чтобы обеспечить вывод, который вы видите.
Эта информация будет распечатана по ссылке объекта «Список» по умолчанию. – Quirin
внутри класса «List» метод toString переопределяется так, что он будет печатать все его содержимое, а не адрес объекта. –
ну, что это означает, что объект списка будет инициализирован функцией Arraylist(). Я думал, что для инициализации объекта можно использовать конструкторы nly? так ли это список List = new List()? – Deepak