includedlibrary
@includedlibrary

Как в java применять арифметические операции к переменным, тип которых наследуется от Number?

Есть класс с обобщением, переменная типа которого расширяет класс Number. Нужно произвести арифметические операции над переменными типа T. Был вариант применять операции к их double значениям, а после создавать новый экзепляр Number. Но он оказался нерабочим: после применения операции из нового экземпляра Number можно было извлечь только double значение.

class Sum<T extends Number> {
    private T t1, t2;
    Sum(T t1, T t2) {
        this.t1 = t1;
        this.t2 = t2;
    }

    public T sum() {
        return (T)(new Double(t1.doubleValue() + t2.doubleValue());
    }
}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@Iloveski
Так как написано, нельзя, максимум, можно написать обобщенный интерфейс и расписать реализации для нужных типов, например
public class TestTask<T extends Number> {

    private Calc<T> calc;

    private T t1;

    private T t2;

    public TestTask(T t1, T t2) {
        this.t1 = t1;
        this.t2 = t2;
    }

    public T sum(T a, T b) {
        return calc.sum(a, b);
    }
}

interface Calc<T extends Number> {
    T sum(T a, T b);
}

class DoubleCalc implements Calc<Double> {
    @Override
    public Double sum(Double a, Double b) {
        return a+b;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы