Java - Enum с полем массива - PullRequest
14 голосов
/ 30 октября 2010

Я хочу сохранить список имен и отдельных псевдонимов для каждого имени как Enum в Java.Количество псевдонимов не будет меняться.Цель состоит в том, чтобы иметь возможность получить полное имя из псевдонима.В настоящее время я реализовал это так:

public enum Names {

    ELIZABETH(new String[] {"Liz","Bet"}),    
    ...
    ;

    private String[] nicknames;

    private Names(String[] nicknames)
    {
        this.nicknames = nicknames
    }


    public Names getNameFromNickname(String nickname) {
       //Obvious how this works
    }
}

Мне очень не нравится повторять new String[] {...}, поэтому я подумал, может ли кто-нибудь предложить альтернативный, более краткий, способ реализации этого?

Ура,

Пит

1 Ответ

35 голосов
/ 30 октября 2010

Параметры Vararg:

private Names(String... nicknames) {

Теперь вы можете вызывать конструктор без явного создания массива:

ELIZABETH("Liz", "Bet", "another name")

Подробности (см. Раздел «Произвольное количество аргументов»))

...