Существует два класса Java «Vec3F» и «Vec3», которые реализуют базовую векторную математику для операций с плавающей запятой. точечный и двойной типы. Оба реализуют интерфейс ниже следующим образом:
Код: Выделить всё
public final class Vec3 implements Vec {
//..
public double distance(Vec3 other) { /*..*/ }
}
public interface Vec {
double distance(V other);
}
Код: Выделить всё
public class Toolbox {
public static double getAllDistances(List points) {
Vec prevPoint = points.get(0);
Vec point;
double sum = 0.0;
int len = points.size();
for (int i=1;i this doesn't compile:
//The method distance(T) in the type Vec is not applicable for the arguments (Vec)
sum+=point.distance(prevPoint);
prevPoint = point;
}
return sum;
}
}
Я также хочу избежать изменения реализации метода, например. distance(Vec3other) для передачи интерфейса (поскольку он использует, например,other.x*other.x напрямую, чтобы избежать вызова каких-либо геттеров).
Я был бы рад за некоторые мысли по этому поводу и надеюсь, что вопрос достаточно ясен и конкретен, заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/324 ... -interface
Мобильная версия