派生クラスに独自のロガーを持たせたいのですが、できないようです:
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
必要なため、次の出力が生成されます。C1
C
new C1()
C1: C
C1: C1
(最初の行はC
コンストラクターから、2 行目はC1
コンストラクターから取得されます)。代わりに があるのでnullPointerException
、私は入ります。C
l
null
inにすることはできません。出力が次のようになるため、そこで初期l
化したくありませんabstract
C
C: C
C1: C1
私のオプションは何ですか?
ありがとう!