Это упоминается в одном из комментариев к этому вопросу: Принудительный вызов метода базового класса Интересно, есть ли способ заставить Object.toString вместо MyClass.toString. Просто хотите это для отладки журналов (хотите увидеть, создает ли библиотека несколько объектов или повторно использует один и тот же). например Что-то вроде

myObject.Object::toString()

Это можно сделать легко? Мы используем java8

2
Sodved 28 Май 2019 в 01:48

2 ответа

Лучший ответ

Нет, это нельзя сделать легко. Но в этом нет необходимости. Если вы хотите, чтобы шестнадцатеричное число печаталось методом toString() по умолчанию, вызовите System.identityHashCode().

9
John Kugelman 27 Май 2019 в 22:56

Нет, в 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 для печати идентификатора объекта

2
Mark Bramnik 27 Май 2019 в 22:57