Comments 16
теперь даже не знаю, есть ли смысл в toString() выводить hashCode.
Есть конечно, дефолтный toString() часто используется для логирования, с помощью хеша можно сразу увидеть в логах один это объект или миллион разных, но того же типа.
Довольно интересно, хотя я не знаю метода сделать это не нарушая лицензию добавить свои методы java.lang.Object. Мои эксперименты показали, что final методы добавить довольно просто, а вот с не-final возникают трудности, из-за того, что отступы в таблице виртуальных методов зашиты в jvm.
Через DCEVM (это патченная/хаченная JVM из OpenJDK) можно redefineClasses на java/lang/Object сделать. Там даже тест такой был, но он оказался несколько, гм, нестабильным, так как последствия такого расползаются по всей JVM.
Ну т.е DCEVM-то про другое, про перегрузку в дебаге произвольных изменений в классах, но как побочный эффект можно и в java/lang/Object добавлять методы.
Делается все через стандартный API redefineClasses из java.lang.instrument.Instrumentation.
В стандаратной JVM, без DCEVM, скорее всего можно так поведение не native методов поменять.
Ну т.е DCEVM-то про другое, про перегрузку в дебаге произвольных изменений в классах, но как побочный эффект можно и в java/lang/Object добавлять методы.
Делается все через стандартный API redefineClasses из java.lang.instrument.Instrumentation.
В стандаратной JVM, без DCEVM, скорее всего можно так поведение не native методов поменять.
Интересно было бы сравнить Object'ы в разных языках программирования. Java, C#, D, что там еще…
VA Smalltalk, чистый имидж.
Dolphin Smalltalk, для сравнения, 190 методов. Даже и не знаю, что даёт такое сравнение.
Object methodDictionary size. "620"
Dolphin Smalltalk, для сравнения, 190 методов. Даже и не знаю, что даёт такое сравнение.
Если сравнивать Object в C# (и вообще всех языках .Net платформы), то он почти такой же за исключения того что нет функций параллельного программирования, вроде wait, sleep, hold и т.п. (по-хорошему они и в Java остались как рудименты эпохи когда не было java.util.concurrent). Есть функции-аналоги Equals (и ReferenceEquals отдельно для сравнения ссылок), Finalize, GetHashCode, GetType (тот же getClass), MemberwiseClone (тот же clone), ToString.
У D минимализм судя по всему есть функции-аналоги Equals, getHashCode, compare, toString
У D минимализм судя по всему есть функции-аналоги Equals, getHashCode, compare, toString
Так часто делают, хоть это и совсем неправильно. Еще часто пишется clazz
А как правильно?
Ну лучше instanceClass. Я говорю больше про Java и ему подобные.
Я не знаю специфики C++, но в том же куске кода из статьи в двух идущих подряд линиях написано и klass и class
Я не знаю специфики C++, но в том же куске кода из статьи в двух идущих подряд линиях написано и klass и class
instanceKlassHandle super_klass;
if (super_class_index == 0) {
Sign up to leave a comment.
Зри в корень: java.lang.Object