LINUX.ORG.RU

История изменений

Исправление ya-betmen, (текущая версия) :

Да, так будет работать, но странно что только так и никак иначе, и нельзя getModelType сразу определить в A.

Ты хочешь странного, дженерики нужны что б проверять типы на этапе компиляции. Попробую пояснить логику, твой getModelType, возвращает класс, если ты создашь его инстанс то этот инстанс должен будет оперировать (а иначе нафиг дженерик) с типами CONTAINER и String. Но объект от голого ValueContainer будет оперировать с Object и Object.

Теоретически ситуацию помог бы решить возврат ValueContainer<CONTAINER, String>.class, но этого очевидно джава не умеет. Должна ли? Выше подсказали трюк с кастом к Class.

Если у тебя дженерик-параметры возвращаемого класса важны, то ты хочешь странную вещь, если же эти параметры не важны, то сделай просто public Class<ValueContainer> getModelType() и не майся.

Исправление ya-betmen, :

Да, так будет работать, но странно что только так и никак иначе, и нельзя getModelType сразу определить в A.

Ты хочешь странного, дженерики нужны что б проверять типы на этапе компиляции. Попробую пояснить логику, твой getModelType, возвращает класс, если ты создашь его инстанс то этот инстанс должен будет оперировать (а иначе нафиг дженерик) с типами CONTAINER и String. Но объект от голого ValueContainer будет оперировать с Object и Object.

Теоретически ситуацию помог бы решить возврат ValueContainer<CONTAINER, String>.class, но этого очевидно джава не умеет. Должна ли?

Если у тебя дженерик-параметры возвращаемого класса важны, то ты хочешь странную вещь, если же эти параметры не важны, то сделай просто public Class<ValueContainer> getModelType() и не майся.

Исходная версия ya-betmen, :

Да, так будет работать, но странно что только так и никак иначе, и нельзя getModelType сразу определить в A.

Ты хочешь странного, дженерики нужны что б проверять типы на этапе компиляции. Попробую пояснить логику, твой getModelType, возвращает класс, если ты создашь его инстанс то этот инстанс должен будет оперировать (а иначе нафиг дженерик) с типами CONTAINER и String. Но объект ValueContainer будет оперировать с Object и Object.

Теоретически ситуацию помог бы решить возврат ValueContainer<CONTAINER, String>.class, но этого очевидно джава не умеет. Должна ли?

Если у тебя дженерик-параметры возвращаемого класса важны, то ты хочешь странную вещь, если же эти параметры не важны, то сделай просто public Class<ValueContainer> getModelType() и не майся.