Почему мы объявляем Loggers статическим финалом? - PullRequest
114 голосов
/ 11 июля 2011

Почему в Java лучше всего объявлять регистратор static final?

private static final Logger S_LOGGER

Ответы [ 12 ]

0 голосов
/ 30 июля 2018

Вам все еще нужен статический регистратор для внутренних статических классов

0 голосов
/ 17 июля 2015

В дополнение к причинам, приведенным в других ответах, я столкнулся с тем, что, если мой регистратор не был ни статическим, ни окончательным:

...
public Logger logger = LoggerFactory.getLogger(DataSummary.class);

public String toJson() {
  GsonBuilder gsonBuilder = new GsonBuilder();   
  return gsonBuilder.create().toJsonTree(this).toString();
}
...

в некоторых случаях (когда я использовал библиотеку Gson)Я бы получил исключение stackoverflow.Моя конкретная ситуация заключалась в создании экземпляра класса, содержащего нестатический не финальный логгер.Затем вызовите метод toJson, который вызвал GsonBuilder:

...
DataSummary ds = new DataSummary(data);    
System.out.println(ds.toJson());
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...