Java泛型:有没有比Vector2D,Vector3D,Vector4D等更好的解决方案?

时间:2015-03-06 12:47:05

标签: java generics vector

我有一个Vector类(不是java.util.Vector)用于数学计算。目前有一些子类,如Vector2D,Vector3D和Vector中受保护的构造函数,它们需要向量的维度。

这样的事情会很好:

Vector<3> 3dVector = new Vector<3>();

当然这是不可能的 - 至少在Java中,也许C ++模板可以处理这个问题。 我考虑了Vector<C extends Coordinatesystem> Coordinatesystem的子类提供getDimension()并且只能作为单例实例化的{{1}}。但我对这个解决方案并不满意。有人有建议吗?

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  
}