Rational
Я хотел бы получить более подробные результаты отладки / регистрации в журналах для нескольких суперклассов, чтобы имя подкласса не влияло на производительность в реальном времени или логику приложения. Я также придерживаюсь мнения, что это нормальный дизайн, но я действительно хочу, чтобы эта информация регистрировалась во время разработки.
Вопрос
Предположим, у меня есть простая структура класса, как показано ниже, как мне перетащить имя подкласса в суперкласс без явной передачи ссылки?
public abstract AbstractClass {
private Logger logger = LoggerFactory.getLogger(getClass());
public AbstractClass() {}
public void execute(ContextObject context) {
if (logger.debuggingEnabled()) {
String invokingClassName = ""; // <-- how do I get this?
logger.debug("Executing {}", invokingClassName);
}
// shared application logic is here...
}
}
public MyClass extends AbstractClass {
public MyClass() {}
@Override
public void execute(ContextObject context) {
super.execute(context);
// application logic...
}
}
Я раньше работал с анализом стековых трасс, и я подозреваю, что по этому пути мне придется идти, если мне понадобится эта информация. Кто-нибудь знает библиотеку, которая сделает это для меня, или хороший фрагмент кода?