派生クラスに独自のロガーを持たせたいのですが、できないようです:
abstract class C {
final protected static Logger l;
C (...) {
l.emit("C");
}
}
class C1 extends C {
final protected static Logger l = new Logger("C1");
C1 (...) {
super(...);
l.emit("C1");
}
}
inではなく in がLogger必要なため、次の出力が生成されます。C1Cnew C1()
C1: C
C1: C1
(最初の行はCコンストラクターから、2 行目はC1コンストラクターから取得されます)。代わりに があるのでnullPointerException、私は入ります。Clnull
inにすることはできません。出力が次のようになるため、そこで初期l化したくありませんabstractC
C: C
C1: C1
私のオプションは何ですか?
ありがとう!