Если вы не очень часто программируете на Java, то этот топик скорее всего будет для вас бесполезен. Не читайте его :)
Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.
Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): " E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.
Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.
Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
public class AbstractEntityFactory<E extends Entity> {
public Class getEntityClass() {
return E.class;
}
}
Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): " E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.