Когда я читаю "Эффективная Java", автор сказал мне, что одноэлементный тип enum
- лучший способ реализовать синглтон, потому что нам не нужно рассматривать сложные атаки сериализации или отражения. Это означает, что мы не можем создать экземпляр enum
используя отражение, верно?
Я провел несколько тестов с классом enum
:
public enum Weekday {}
Затем я попытался создать экземпляр Weekday
:
Class<Weekday> weekdayClass = Weekday.class;
Constructor<Weekday> cw = weekdayClass.getConstructor(null);
cw.setAccessible(true);
cw.newInstance(null);
Как вы знаете, это не сработает. Когда я меняю ключевое слово enum
на class
, он работает. Я хочу знать, почему. Спасибо.