![](/img/trans.png)
[英]Static and non static methods with the same name in parent class and implementing interface
[英]logging static methods in a parent class
我有一個抽象類Parent,有2個子類A和B。Parent有一個稱為do()的靜態方法。 我想知道是否有一種靜態方法可以在Logger中為類A添加日志信息(稱為A.do()),在日志B中添加日志信息(稱為B.do())。 通常
protected final Logger LOGGER = Logger.getLogger(getClass());
因為do()是靜態方法,所以不會起作用,因此Logger也需要是靜態的,但是getClass()方法顯然不是靜態的。
謝謝。
private final static Logger LOGGER = Logger.getLogger(A.class);
每個類都有自己的logger
:指定該類是可以的。
我不推薦,但如果您真的想要...
public class A {
public static void do() {
doImpl(A.class);
}
protected static void doImpl(Class<?> refClass) {
}
}
public class B extends A {
public static void do() {
doImpl(B.class);
}
}
最佳做法是聲明LOGGER靜態,例如
protected final static Logger LOGGER = Logger.getLogger(getClass());
這樣,您可以從動態和靜態方法中使用LOGGER。
同樣,每個類都應具有自己的記錄器實例。 所以我將保護改為私有。
另外,應該調用“ MyApp.class”,而不是調用“ getClass()”,例如
private final static Logger LOGGER = Logger.getLogger(MyApp.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.