有没有一种方法可以在Java中实现类型安全向量



我正在尝试使用Java为我的编码分配实现一个向量。我想把关于向量维度的信息放入它的类型中,以使我的代码更安全。

我试图将向量表示为int[n],但以下代码没有编译。

public static int[n] createVector(int n) {
return new int[n];
}

编译的输出:

srcMain.java:59: error: ']' expected
public static int[n] createVector(int n) {
^
srcMain.java:59: error: ';' expected
public static int[n] createVector(int n) {
^
srcMain.java:59: error: invalid method declaration; return type required
public static int[n] createVector(int n) {
^
3 errors

我认为问题是java中所有的int数组都有相同的类型,我无法将其专门化

有没有用Java实现的方法?

如果您想创建向量的类型[a,b]!=向量的类型[a,b,c]你可以写这样的东西:

class Vector<T> {
private final int dimension;
private T[] elements;
public Vector(Class<T> clazz, int dimension) {
this.dimension = dimension;
this.elements = (T[]) Array.newInstance(clazz, dimension);
}
}
class Vector2D<T> extends Vector<T> {
public Vector2D(Class<T> clazz) {
super(clazz, 2);
}
}
class Vector3D<T> extends Vector<T> {
public Vector3D(Class<T> clazz) {
super(clazz, 3);
}
}

最新更新