私が持っているとしましょう:
public abstract class Animal {
// SLF4J
private Logger logger = LoggerFactory.getLogger(Animal.class);
// ...etc.
public void setLogger(Logger logger) {
this.logger = logger;
}
public Logger getLogger() {
return this.logger;
}
}
と:
public abstract class Dog extends Animal {
// SLF4J
private Logger logger = LoggerFactory.getLogger(Dog.class);
// ...etc.
public void setLogger(Logger logger) {
this.logger = logger;
}
public Logger getLogger() {
return this.logger;
}
}
次に、次のコードを実行すると:
Dog d1 = new Dog();
Animal a1 = new Dog();
d1
「犬」ロガーまたは「動物」ロガーを取得しますか?a1
「犬」ロガーまたは「動物」ロガーを取得しますか?- Dog と Animal が常に正しいロガーを取得できるように、このコードを記述するためのより良い/クリーン/安全な方法はありますか?