是否有可能在Java中創建「通用」類,將取決於一些參數(而不是類型)?例如:的Java類依賴於某些參數
class RVector<int n>
{
double[] v = new double[n];
public RVector<int n>(double[] d){
//...
}
//...
}
對於每個整數n,它將模擬具有n個分量的實數向量。 如果不是,Java中是否有類似的東西?
是否有可能在Java中創建「通用」類,將取決於一些參數(而不是類型)?例如:的Java類依賴於某些參數
class RVector<int n>
{
double[] v = new double[n];
public RVector<int n>(double[] d){
//...
}
//...
}
對於每個整數n,它將模擬具有n個分量的實數向量。 如果不是,Java中是否有類似的東西?
不完全泛型,但你肯定可以實現通過傳遞n
作爲構造函數的參數。
class RVector
{
double[] v;
public RVector(double[] d, int n) {
this.v = new double[n];
//...
}
//...
}
從構造函數中刪除''
@mre完成,謝謝。 –
您不能使用泛型。
似乎是一個構造符參數,而不是每個實例或每個類具有返回向量的大小的方法
Java的泛型是不完全一樣的模板。因此,您無法在<>
中輸入值。它必須是一個類型。此
一種解決方法是通過n
的構造器:
public RVector(int n, double[] d) {
...
}
但有了這個,你不能保證「類型安全」在編譯時,沒有提及的是,你不能約束所述double[]
的長度爲n
。
另一個解決方法是創建多個矢量類:
public class Vector1D {
public Vector1D(double value) { ... }
}
public class Vector2D {
public Vector2D(double value1, double value2) { ... }
}
public class Vector3D {
public Vector3D(double value1, double value2, double value3) { ... }
}
否,該功能被稱爲任一類型的級文字或[依賴打字](https://en.wikipedia.org/wiki/Dependent_type ),取決於你想採取多遠。 Java不支持它。 –