Java, передавая не объявленное количество аргументов в массив - PullRequest
0 голосов
/ 09 октября 2018

Я пишу проект для работы с векторами, и вот где я застрял: я создал суперкласс, в котором я объявляю координаты поля, и у меня есть 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[] {});
    }

И мне интересно, какЯ могу передать не объявленное количество переменных конструктору, поэтому, когда я вызываю этот метод в основном, я могу пойти по этому пути: VectorND vec = new VectorND (1,2,3 ... n) ;?спасибо за помощь!

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете просто использовать n напрямую:

public VectorND(int...n) 
{       
    super(n);
}

Помните, что списки переменных переменных в Java являются (в основном) синтаксическим сахаром для передачи массивов.

Вы знаете, что можете использовать n непосредственно в этом случае, потому что вы ничего не знаете, имеет ссылку на этот массив, потому что он был создан для вызова конструктора VectorND.(Если вы этого не знали, было бы безопаснее скопировать массив.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...