Java,将未声明的参数量传递给数组

标签 java constructor extend

我正在编写一个项目来处理 vector 上的操作,而这正是我陷入困境的地方:我创建了父类(super class),在其中声明了场坐标,并且我有 3 个不同的类用于不同的维度 Vector3D、Vector5D、VectorND。 最后我遇到了一个问题。这是父类(super class):

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 构造函数而创建的. (如果你不知道,复制数组会更安全。)

关于Java,将未声明的参数量传递给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726559/

相关文章:

java - 哪些图像格式可以在 JavaFX 中调整大小

java - 什么是 FTL 文件

c++ - 带有自定义分配器的 std::vector 子类与 std::vectors 之间的转换

java - 为每个创建的类调用构造函数

java - 使用二叉树查找字谜

c++ - 使用可转换类型调用重载函数时模板构造函数歧义

css - 使用 LESS,是否可以扩展参数混合?

java - 想要创建一个通用的 AsyncTask - 如何?

javascript - 如何扩展 MarionetteJS 模块以减少代码重复

java - 是否可以找到如果. Elasticsearch 文档中的单个属性被修改