class BoxPrinter<T> {
private T val;
public BoxPrinter(T arg) {
val = arg;
}
public String toString() {
return "{" + val + "}";
}
public T getValue() {
return val;
}
}
class B {
public static void main(String[] args) {
BoxPrinter<Integer> value1 = new BoxPrinter<Integer>(new Integer(10));
//////////тут///
System.out.println(value1);
////////////////
Integer intValue1 = value1.getValue();
BoxPrinter<String> value2 = new BoxPrinter<String>("Hello world");
///////////и тут////
System.out.println(value2);
///////////////////
}
}
В код особо не вдавайтесь скопипастил с сайта.Вопрос:почему помеченные строки println
не выводят, как обычно, при попытке напечатать в консоль объект, что то вроде "BoxPrinter@1540e19d", а печатают "10" и "Hello World"?
Вот эта строка
System.out.println(value1);
эквивалентна следующей
System.out.println(value1.toString());
то есть будет вызван метод toString()
(он определен в классе Object
). В Вашем классе BoxPrinter
этот метод переопределен:
public String toString() {
return "{" + val + "}";
}
Из-за этого в консоле Вы получаете 10 и "Hello World" вместо стандартного BoxPrinter@1540e19d.
Компилятор сделает эту строку:
System.out.println(value1);
В эту:
System.out.println(value1.toString());
Если метод toString() не определен то будет использоваться метод из класса Object, который определяется так:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Это обозначает, что сначала будет выведено расположение класса, собачка и хэш-код объекта.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Посоветуйтепожалуйста хорошие online курсы по Java, котррые выдают сертификат об окончании
Дорогие друзья! Мне надо создать программу, которая будет считывать данные из txt-файла и записывать в csv(csv-файл она также создаёт сама)Я понимаю,...
Например, имеем строку "кровоточивость", и нужно узнать индекс каждой буквы "о",как это сделать,не переводя строку в массив?