Как назначить общий enum в конструкторе в Java? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть следующий код

import java.util.Arrays;

public class CustomEnum {
    //?? varName;
    public <E extends Enum<E>> CustomEnum(Class<E> enumClass) {
        System.out.println(Arrays.toString(enumClass.getEnumConstants()));
        //?? varName = enumClass;
    }
}

public enum Mode {
    SAMPLE_A,
    SAMPLE_B,
    SAMPLE_C,
    SAMPLE_D
}

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

public static void main(String[] args) {
        CustomEnum customEnum = new CustomEnum(Mode.class);
    }

вывод кода

[SAMPLE_A, SAMPLE_B, SAMPLE_C, SAMPLE_D]

Что я хочу сделатьэто присвоить значение enumClass переменной и назначить ее в конструкторе, но я не знаю, какого типа должна быть переменная, я пробовал несколькими способами, но я получаю ошибки компиляции, это возможно?

если вышеприведенное невозможно, как я могу преобразовать универсальный тип E[], который возвращается getEnumConstants() в String[]?

1 Ответ

0 голосов
/ 24 ноября 2018

Сделать весь класс общим, а не только конструктор.

public class CustomEnum<E extends Enum<E>> {

    private E[] constants;

    public CustomEnum(Class<E> enumClass) {
        constants = enumClass.getEnumConstants();
    }

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