Математические операции с Generics Java

148
09 апреля 2019, 17:50

есть потребность в написание, некоторых математических примитивов, наподобие векторов и матриц... Хотел использовать дженерики, но столкнулся с проблемой, что к ним нельзя применять математические операции также как и в С++, вот пример:

public class VectorX2<Type> {
    private Type x;
    private Type y;
    ...
    public void add(VectorX2<Type> another) {
         this.x += another.x;
    }
}

Также пробовал и следующее:

public class VectorX2<Type extends Number> {
    private Type x;
    private Type y;
    ...
    public void add(VectorX2<Type extends Number> another) {
         this.x += another.x;
    }
} 

Но все также безрезультатно... Может кто-нибудь подскажет, как это можно избежать или сделать лучше или все-таки придется жестко привязываться к определенным типам?

Answer 1

Воспользуйтесь библиотекой Apache Commons Math, и не пишите велосипеды (:

Answer 2
public class VectorX2<Type extends Number> {
    private Type x;
    private Type y;
    public VectorX2(Type x, Type y) {
        this.x = x;
        this.y = y;
    }
    public void add(VectorX2<? extends Number> another) {
        Number n = x.doubleValue() + another.x.doubleValue();
        x = (Type) n;
    }
    @Override
    public String toString() {
        return "VectorX2{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
    public static void main(String[] args) {
        VectorX2<Integer> v = new VectorX2<>(1, 2);
        System.out.println("v = " + v);
        v.add(new VectorX2<>(3, 4));
        System.out.println("v = " + v);
    }
}
READ ALSO
Оператор throws и исключения

Оператор throws и исключения

Всем привет, друзья! Хотелось бы спросить: checked исключения, как я понял обязательно должны содержать оператор throws в сигнатуре метода или обрабатываться...

157
Полиморфизм и его реализации

Полиморфизм и его реализации

Хотелось бы узнать побольше про полиморфизм простыми словами и про его реализации потому что как я понял все везде спорят что нет полиморфизма,...

192
Перемещение порсонажа [закрыт]

Перемещение порсонажа [закрыт]

Всем приветНикак не могу понять как сделать перемещение персонажа из одной точки в другую

190
Объемлющая область действия

Объемлющая область действия

Переменные, определяемые в объемлющей области действия лямбда-выражения, доступны в этом выраженииНапример, в лямбда-выражении можно...

454