Как мне инициировать массив в параметрах объекта в Java? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь создать программу и у меня проблемы с синтаксисом.Я пытаюсь создать массив в качестве параметра для объекта, но у меня возникают проблемы с синтаксисом.

public class Example {
    String[] words;

    public Example(words) {
        this.words = words;
    }
}

public class Construction {
    Example arrayExample = new Example({"one", "two", "three"});
}

Это выдает ошибку при попытке его скомпилировать.Есть ли способ сделать это без предварительной инициализации массива вне объявления объекта?

Ответы [ 4 ]

0 голосов
/ 22 февраля 2019

Не видел, чтобы кто-то еще упоминал об этом, но так как кажется, что вы немного новичок в языке, стоит также упомянуть, что вы можете использовать синтаксис varargs вместо массива для вашего конструктора:

public Example(String... words) {
    this.words = words;
}

Это по-прежнему позволяет передавать массив, но также позволяет вызывать конструктор с 0 или более простыми String аргументами:

new Example("no", "need", "to", "pass", "an", "array");
new Example(); // same as empty array and works perfectly fine
new Example("one_word_is_ok_too");
new Example(new String[]{"can","use","arrays","as","well"});

Вот еще немного фона, если выинтересно.

0 голосов
/ 22 февраля 2019

В параметре вашего параметризованного конструктора отсутствует тип данных массива String words.Это должно быть String [] words, чтобы соответствовать типу данных вашего личного массива элементов данных String[] words.Например:

public class Example {
    String[] words;

    public Example(String[] words) {
        this.words = words;
    }
}

Вы можете вызывать конструктор из своей основной сети без инициализации массива String[] следующим образом:

public class Construction {
    Example arrayExample = new Example(new String[]{"one", "two", "three"});
}

Что это делает, он создает экземпляр объекта при запускевремя и отправляет его в качестве параметра непосредственно в конструктор.

0 голосов
/ 22 февраля 2019

Вам необходимо объявить тип параметра в примере конструктора, как показано ниже, чтобы устранить ошибку компиляции в конструкторе.

Example(String[] words){
  this.words = words;
}

Чтобы передать массив в качестве аргумента, вам нужно либо вызвать конструктор массива следующим образом

new Example(new String[]{"I am a string","I am another string"});

, либо объявить его с помощью переменной и использовать его следующим образом.

String[] argument = {"I am a string","I am another string"};
new Example(argument);

В этом ответе есть хорошее объяснение .

0 голосов
/ 22 февраля 2019

Попробуйте:

new Example(new String[] {"one", "two", "three"});

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

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