@delphikettle
Программирую в свободное от учёбы время

Приведение типов, наследуемых от Number?

Имеется generic-класс вида ClassName<TYPE extends Number>, в котором необходимо выполнить приведение разных классов типа ClassName, например ClassName<BigInteger>и ClassName<Long>. Имеется также свой класс для описания дробей, наследуемый от Number. То есть может понадобиться привести ClassName<ImproperFraction> к ClassName<Double>. Так вот, как мне правильно выполнить приведение объектных generic-типов в Java?

public class ClassName<TYPE extends Number> {
//govnokod
    public <T extends Number> ClassName<T> count(){
        return this;//пишет incompatible types: requred ClassName<T>, found ClassName<TYPE>
    }
//govnokod
}
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 2
angry_cellophane
@angry_cellophane
1. Во-первых, про отношение TYPE и T ничего не сказано.
2. Во-вторых, в джаве нет ковариантности и контрвариатности из-за type erasure. Пример: Class < Integer > не является подтипом Class < Number > . Красивая ссылка на википедию.
Ответ написан
@Copperfield
Android dude
public class ClassName<TYPE extends Number> {
        //govnokod
        public <T extends Number> ClassName<TYPE> count(){
            return this;//пишет incompatible types: requred ClassName<T>, found ClassName<TYPE>
        }
//govnokod
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы