Передача перечисления в качестве параметра в методе? - PullRequest
0 голосов
/ 19 июля 2010

У меня есть абстрактный класс Medium, в котором одна из камер данных является перечислением.

private Taal talenOndertiteling[];

public enum Taal {
    NEDERLANDS, FRANS, DUITS, ENGELS, SPAANS, ITALIAANS
}
public Taal[] getTalenOndertiteling() {
    return talenOndertiteling;
}

public void setTalenOndertiteling(Taal[] talenOndertiteling) {
    this.talenOndertiteling = talenOndertiteling;
}

Теперь, когда я пытаюсь вызвать последний метод, подобный этому:

            BD bd1 = new BD();
            bd1.setTalenOndertiteling(Taal.ENGELS);

Я получаю ошибку. (Класс BD реализует класс Medium) Есть идеи о том, как я должен вызывать метод? А что, если бы я хотел установить несколько языков, как бы я это сделал?

Спасибо!

Ответы [ 5 ]

6 голосов
/ 19 июля 2010

Ваш метод принимает Taal[], но ваш вызов проходит Taal. У вас есть два варианта:

Либо передать явное Taal[]:

bd1.setTalenOndertiteling(new Taal[] {Taal.ENGELS});

или измените объявление метода на параметр vararg и попросите компилятор сделать это за вас:

public void setTalenOndertiteling(Taal... talenOndertiteling) {
2 голосов
/ 19 июля 2010

Вы должны создать массив с одним элементом и передать его методу:

bd1.setTalenOndertiteling(new Taal[]{Taal.ENGELS});
0 голосов
/ 19 июля 2010

две проблемы: 1) setTalenOndertiteling () ожидает массив Taal, поэтому

bd.setTalenOndertiteling(new Taal[]{Taal.ENGELS};

2) Кажется, что Taal является вложенным перечислением (в BD?), Без специального импорта, вам нужно

bd.setTalenOndertiteling(new BD.Taal[]{BD.Taal.ENGELS};
0 голосов
/ 19 июля 2010

setTalenOrdertiteling получает массив.Поэтому правильный вызов должен быть:

bd1.setTalenOndertiteling(new Taal[] {Taal.ENGELS});
0 голосов
/ 19 июля 2010

Сеттер ожидает массив перечислений Таала.

Таким образом, правильное использование:

BD bd1 = new BD();
bd1.setTalenOndertiteling(new Taal[]{Taal.ENGELS});

или более многословно:

BD bd1 = new BD();

Taal[] taals = new Taal[1];
taals[0] = Taal.ENGELS;

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