У меня есть функция регистрации, которая принимает вызывающий объект в качестве параметра. Затем я вызываю getClass(). GetSimpleName(), чтобы я мог легко получить имя класса для добавления в мою запись в журнале для удобства. Проблема в том, что когда я вызываю свою функцию журнала из статического метода, я не могу пройти в "this". Моя функция журнала выглядит примерно так:
public static void log(Object o, String msg){
do_log(o.getClass().getSimpleName()+" "+msg);
}
public void do_something(){
log(this, "Some message");
}
Но позвольте сказать, что я хочу войти в статическую функцию:
public static void do_something_static(){
log(this, "Some message from static");
}
Очевидно, do_something_static() не будет работать, потому что он статичен, а "this" не находится в статическом контексте. Как я могу обойти это? И могу ли я сделать это без использования рефлексии (поскольку я понимаю, что есть много накладных расходов, и это может повлиять на производительность, так как я регистрирую много данных)
Я знаю, что могу, возможно, каким-то образом жестко закодировать текущий класс в вызове, но я уверен, что когда я переведу функцию в другой класс, я забуду обновить жестко закодированную ссылку, и она больше не будет правильный.
Спасибо!