есть потребность в написание, некоторых математических примитивов, наподобие векторов и матриц... Хотел использовать дженерики, но столкнулся с проблемой, что к ним нельзя применять математические операции также как и в С++, вот пример:
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;
}
}
Но все также безрезультатно... Может кто-нибудь подскажет, как это можно избежать или сделать лучше или все-таки придется жестко привязываться к определенным типам?
Воспользуйтесь библиотекой Apache Commons Math, и не пишите велосипеды (:
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);
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет, друзья! Хотелось бы спросить: checked исключения, как я понял обязательно должны содержать оператор throws в сигнатуре метода или обрабатываться...
Хотелось бы узнать побольше про полиморфизм простыми словами и про его реализации потому что как я понял все везде спорят что нет полиморфизма,...
Всем приветНикак не могу понять как сделать перемещение персонажа из одной точки в другую
Переменные, определяемые в объемлющей области действия лямбда-выражения, доступны в этом выраженииНапример, в лямбда-выражении можно...