Java,将未声明的参数数量传递给数组
Java, passing not declared amount of arguments to array
我正在编写一个项目来处理向量上的操作,这就是我遇到的问题:我创建了超类,在其中声明了场坐标,并且我有 3 个不同的 类 用于不同的维度 Vector3D, Vector5D,VectorND。
最后我遇到了一个问题。这是超类:
abstract class Vector implements sample
{
int[] coordinates;
public Vector (int[] coordinates)
{
this.coordinates=coordinates;
}
这里以 Vector3D 为例:
class Vector3D extends Vector
{
public Vector3D(int n1,int n2,int n3)
{
super(new int[]{n1,n2,n3});
}
这里是 VectorND:
class VectorND extends Vector
{
public VectorND(int...n)
{
super(new int[] {});
}
我想知道如何将未声明数量的变量传递给构造函数,所以当我在 main 中调用此方法时,我可以这样做:VectorND vec = new VectorND(1,2,3...n );?感谢您的帮助!
你可以直接使用n
:
public VectorND(int...n)
{
super(n);
}
请记住,Java 中的可变参数列表(大部分)是用于传递数组的语法糖。
你知道你可以在这种情况下直接使用 n
因为你不知道其他任何东西都引用了那个数组,因为它是为调用 VectorND
构造函数而创建的。 (如果你不知道,复制数组会更安全。)
我正在编写一个项目来处理向量上的操作,这就是我遇到的问题:我创建了超类,在其中声明了场坐标,并且我有 3 个不同的 类 用于不同的维度 Vector3D, Vector5D,VectorND。 最后我遇到了一个问题。这是超类:
abstract class Vector implements sample
{
int[] coordinates;
public Vector (int[] coordinates)
{
this.coordinates=coordinates;
}
这里以 Vector3D 为例:
class Vector3D extends Vector
{
public Vector3D(int n1,int n2,int n3)
{
super(new int[]{n1,n2,n3});
}
这里是 VectorND:
class VectorND extends Vector
{
public VectorND(int...n)
{
super(new int[] {});
}
我想知道如何将未声明数量的变量传递给构造函数,所以当我在 main 中调用此方法时,我可以这样做:VectorND vec = new VectorND(1,2,3...n );?感谢您的帮助!
你可以直接使用n
:
public VectorND(int...n)
{
super(n);
}
请记住,Java 中的可变参数列表(大部分)是用于传递数组的语法糖。
你知道你可以在这种情况下直接使用 n
因为你不知道其他任何东西都引用了那个数组,因为它是为调用 VectorND
构造函数而创建的。 (如果你不知道,复制数组会更安全。)