Java: getClass () ограниченного типа
Я кое-что заметил, пока дурачился с дженериками. В приведенном ниже примереdoStuff1
компилирует ноdoStuff2
Безразлично»т:
public void doStuff1(T value) {
Class theClass = value.getClass();
}
public void doStuff2(T value) {
Class theClass = value.getClass();
}
Итак, я посмотрел документацию дляObject.getClass()
и нашел это:
Фактический тип результата - класс <? расширяет | X |> где | X | стирание статического типа выражения, для которого вызывается getClass.
Это сделало меня немного любопытным. ПочемуgetClass()
разработан таким образом? Я могу понять преобразование типов в их необработанные классы, если это применимо, но я не вижу очевидной причины, почему ониобязательно придется сделать это и убитьT
, Есть ли конкретная причина, по которой он тоже от нее избавляется, или это просто генерал?позволять'просто избавиться от всего, потому что этопроще; кому это когда-нибудь понадобится " подход?