Не изменять Object
. Не изменяйте ничего в java.lang
. Я не знаю, технически ли это возможно, но это определенно исключительно плохая идея, и в основном нарушает платформу Java (" Q : что такое контракт Object.equals()
? A : Это зависит от того, какие пользовательские модификации JVM делают это ... ") - вы ничего не сможете сделать.
Подумайте о том, что вы делаете - вы добавляете этот класс (и возможное поведение) к каждому объекту. ClassLoaders, Strings, Threads, InputStreams, Throwables, XMLGregorianCalendar, все . Это почти наверняка не то, что вы хотели.
Вместо этого альтернативным подходом будет добавление ваших модификаций в абстрактный класс AppnameSuperObject
и расширение его для классов, к которым вы действительно хотите добавить это поведение.
С другой стороны, если вы действительно хотите сделать это для всех объектов для какой-либо работы по протоколированию / профилированию / и т. Д., Посмотрите на использование аспектно-ориентированного программирования до weave дополнительные поля на классы во время выполнения .