我有一个Vector类(不是java.util.Vector)用于数学计算。目前有一些子类,如Vector2D,Vector3D和Vector中受保护的构造函数,它们需要向量的维度。
这样的事情会很好:
Vector<3> 3dVector = new Vector<3>();
当然这是不可能的 - 至少在Java中,也许C ++模板可以处理这个问题。
我考虑了Vector<C extends Coordinatesystem>
Coordinatesystem
的子类提供getDimension()
并且只能作为单例实例化的{{1}}。但我对这个解决方案并不满意。有人有建议吗?
答案 0 :(得分:1)
基本Java概念之一:
这就是为什么Java缺少一些C ++的东西,包括高级模板和运算符重载。
最后,您总是可以编写一些泛型类,例如:
public class VectorND {
private double[] coord;
public VectorND (int n) {
coord = new double[n];
}
public void setCoord(int index, double value) {...}
public double getCoord(int index) {...}
//... etc
}