Java Vaadin ComboBox предупреждение Intellij: неясно, желателен вызов varargs или non-varargs - PullRequest
0 голосов
/ 26 февраля 2020

Мой код работает, но я получил предупреждение от Intelij (код выделен): unclear if a varargs or non-varargs call is desired. Но код делает идеально то, что я хочу или что я ожидаю, заполните комбо со значениями. Когда я нажимаю на элемент в комбинированном списке, он возвращает мне правильное перечисление, поэтому любой может помочь мне исправить это предупреждение.

  ComboBox comboStatus = new ComboBox();
  comboStatus.addItems(BatchStatusCode.values());

Предупреждение находится во второй строке, где BatchStatusCode - это относительно простое перечисление

public enum BatchStatusCode {

    RUNNING("R","RUNNING"),
    FINISHED("F","FINISHED"),
    CANCELED("C","CANCELED");
    .... some code

    BatchStatusCode(final String code,final String fullName) {
        this.code = code;this.fullName = fullName;
    }

    public String getCode() {
        return code;
    }
    public String getFullName() { return fullName;}
    .... some code

1 Ответ

1 голос
/ 27 февраля 2020

Отказ от ответственности: Vaadin 7, кажется, является единственной версией, имеющей этот метод, поэтому я предполагаю, что вы используете его. Пожалуйста, поправьте меня, если я ошибаюсь

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

В классе AbstractSelect есть два перегруженных метода для addItems:

  1. public void addItems(Collection<?> itemIds) throws UnsupportedOperationException
  2. public void addItems(Object... itemId) throws UnsupportedOperationException

Таким образом, решение может быть просто игнорировать предупреждение или указывать компилятору, какой метод вы хотели бы использовать. Например, вот так: comboBox.addItems(Arrays.asList(BatchStatusCode.values()));


Редактировать: На самом деле это не причина. Но я оставлю это здесь

Проблема с Enum values() заключается в том, что она генерируется компилятором при создании перечисления .

The compiler automatically adds some special methods when it creates an enum.
For example, they have a static values method that returns an array containing all
of the values of the enum in the order they are declared. 
...