Как реализовать вход в синглтон перечисления?
Я использую одноэлементное перечисление, но реализация протоколирования затруднительна. Это:
public enum Foo {
INSTANCE;
private final Logger log = Logger.getLogger(Foo.class.getName());
...
}
Logger создается так, как я создавал бы экземпляр logger для обычного класса Java, но, конечно, я получаю следующую ошибку:
Foo.java: illegal reference to static field from initializer
Существует ли эквивалентный способ входа в синглеты enum?
3 ответа:
В ответ на ваш вопрос, просто сделайте регистратор статическим...
Кстати, я думаю, что его стандартная практика использовать статический регистратор даже для экземпляров объектов. Другими словами, регистратор находится в классе; все объекты используют статические ссылки регистратора.
См.
Http://logging.apache.org/log4j/1.2/manual.html
Большинство примеров использования логгера там имеют логгер как статическое свойство...