假设层次结构中的所有类都只有默认构造函数,那么创建Log实例的问题如下:
public abstract class AbstractService {
protected static Log log=null;
public AbstractService(){
log=LogFactory.getLog(this.getClass().getName());
}
public void foo(){
log.debug("base foo() : ");
}
}
class ServiceA extends AbstractService {
public void foo(){
super.foo();
log.debug("Overloaded foo() in ServiceA");
}
}
class ServiceB extends AbstractService {
public void foo(){
super.foo();
log.debug("Overloaded foo() in ServiceB");
}
}
答案 0 :(得分:3)
鉴于“log”字段是静态的(即与AbstractService类相关联),不应该从构造函数(与该类的特定实例相关联)中设置它。
您需要: