Это упоминается в одном из комментариев к этому вопросу: Принудительный вызов метода базового класса Интересно, есть ли способ заставить Object.toString вместо MyClass.toString. Просто хотите это для отладки журналов (хотите увидеть, создает ли библиотека несколько объектов или повторно использует один и тот же). например Что-то вроде
myObject.Object::toString()
Это можно сделать легко? Мы используем java8
2 ответа
Нет, это нельзя сделать легко. Но в этом нет необходимости. Если вы хотите, чтобы шестнадцатеричное число печаталось методом toString()
по умолчанию, вызовите System.identityHashCode()
.
Нет, в Java это невозможно, насколько я знаю. Тем не менее, есть некоторые обходные пути:
Обходной путь 1:
class MyObject {
public String toString() {
return super.toString() + <whatever_of_my_object>;
}
}
Обходной путь 2:
class MyObject {
public String toIdentityString() { // this is your custom function you can call it foo
return super.toString();
}
}
А затем используйте toIdentityString для печати идентификатора объекта
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].