Есть ли лучший способ получить текущую переменную класса в Java? - PullRequest
3 голосов
/ 28 января 2010

Прямо сейчас я делаю что-то вроде этого:

 private static Logger logger = LoggerFactory
            .getLogger(MasterController.class);

Есть ли лучший способ, чем использовать имя класса (которым является MasterController)? Может быть, что-то общее?

Ответы [ 3 ]

1 голос
/ 28 января 2010

Как насчет этого:

private final Logger logger = LoggerFactory.getLogger(getClass());

Этот подход позволяет избежать ошибок копирования + вставки.

Я читал (не помню, где был много лет назад), что экземпляры Logger ужасно дешевы, и не имеет значения, есть ли у каждого экземпляра вашего класса собственный регистратор.

Но если вас не убеждают и вы хотите сохранить статичность экземпляра Logger, то он, вероятно, должен быть как final , так и в верхнем регистре, например:

private static final Logger LOG = LoggerFactory.getLogger(MasterController.class);
1 голос
/ 28 января 2010

Следующая ссылка имеет интересный подход:

http://www.rgagnon.com/javadetails/java-0402.html

Вставлено сюда для удобства:

public class ClassFromStatic {

  public static void main(java.lang.String[] args) {
    someStaticMethod();
  }

  public static void someStaticMethod() {
    System.out.println
       ("I'm in " + new CurrentClassGetter().getClassName() + " class");
  }

  public static class CurrentClassGetter extends SecurityManager {
    public String getClassName() {
      return getClassContext()[1].getName();
    }
  }
}
0 голосов
/ 28 января 2010

Не уверен, что вам нужно, но вы всегда можете вызвать getClass () для объекта

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