2015-06-05 5 views
-2

мы можем вызывать метод ToString() класса Object для строкимы можем вызвать метод ToString() класса Object для строки

String string = new String("Hello"); 
System.out.println(string); 

для струны перекрытого метод вызывается в Строка. Есть ли способ вызова метода ToString() класса Object для строки

Я хочу, чтобы распечатать адреса памяти для строкового объекта

+0

Я не уверен, что вы просите. Можете ли вы добавить дополнительные сведения о проблеме, с которой вы столкнулись? Чего вы пытаетесь достичь? – Pshemo

+1

@jiriS Вам нужно будет использовать System.identityHashCode (string). string.hashCode() будет использовать переопределение hashCode(). – Taemyr

+0

'Object.toString()' выводит хэш-код, который может быть связан с адресом или может не совпадать. –

ответ

3

Нет, вы не можете вызвать переопределенный метод. Тем не менее, вы могли бы имитировать выход из Object «s toString() (который в основном только использует хэш-код) следующим образом:

string.getClass().getName() + "@" + Integer.toHexString(string.hashCode()) 

* Редактирование: Как заметил Taemyr в комментариях, даже ближе имитируют, что не использовать hashCode определяется String, будет:

string.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(string)) 
+2

Но 'hashCode()' также переопределяется в этом случае. Поэтому это не поможет мне guess ... – Codebender

+4

Вместо этого используйте System.identityHashCode (string)? – Taemyr

+0

@AbishekManoharan хорошо да, 'String' переопределяет' hashCode() '- но даже если метод' toString() '' Object' вызывался напрямую, он использовал бы реализацию hashCode() 'подкласса. Поскольку я надеюсь, что OP не зависит от конкретного результата hashCode(), результат должен быть достаточно близок. –

1

Неа .. Почему? .. Ну, потому что метод переопределены, Так на основе типа объекта, в время выполнения, метод из String класса всегда называется

0

нет, вы не можете, как только подкласс переопределяет член (функции родителя или переменный), вы не можете ch их из-за пределов этого класса. это весь принцип инкапсуляции и наследования (дочерние классы, имеющие различное поведение, чем родительские).

Смежные вопросы