JMMによれば起こらないような奇妙な動作が見られます。 私は、クラスAを継承したクラスBを持っています。これは、コンストラクタ内のクラスBによってアクセスされるコンストラクタで初期化される、Aの最終的な保護フィールドです。サブクラスからアクセスしたときのファイナルフィールドの状態
しかし、ごくまれに、BでアクセスするとNPEが得られます。 アイデアはありますか?コードの
パート:
class AsyncReplicationSourceGroup extends AbstractReplicationSourceGroup{
public AsyncReplicationSourceGroup(DynamicSourceGroupConfigHolder groupConfig){
super(groupConfig);
createReplicationChannels();
}
protected void createReplicationChannels(){
//...
specificLogger.finest("created channel"); // this is where the NPE is thrown from
//...
}
}
abstract class AbstractReplicationSourceGroup{
protected final Logger specificLogger;
public AbstractReplicationSourceGroup(DynamicSourceGroupConfigHolder groupConfigHolder){
specificLogger = Logger.getLogger(Constants.LOGGER_REPLICATION_GROUP + "." + _groupConfigHolder.getConfig().getName());
//...
}
}
最小限の失敗例を投稿できますか?そうでなければ、我々は推測している。 –
コードはどのようなものですか? – plucury
例外を再現する例を教えてください。 – sp00m