В Java Object.getClass
имеет подпись типа public final Class<?> getClass()
, но комментарий JavaDoc упоминает, что это действительно будет "Class<? extends |X|>
, где | X | - стирание статического типа выражения, на котором getClass
называется".
Это действительно так и применяется компилятором, поддерживаемым IDE: s и т.д., но какая магия делает этот тик? Разрабатывает ли компилятор этот метод особым образом? Действительно ли это генерирует переопределение getClass()
для каждого типа?
Я понимаю, что это только конструкция времени компиляции, во время выполнения не будет иметь никакого значения, каков параметр generic type класса/.