Veo un comportamiento extraño que parece que no debería suceder según JMM. Tengo la clase B que extiende la clase A, un campo protegido final en A que se inicializa en un constructor al que accede la clase B en su constructor.Los campos finales indican cuando se accede desde la subclase
embargo, en casos muy raros me siento un NPE cuando se accede en B. ¿Alguna idea?
parte del código:
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());
//...
}
}
Podría publicar un ejemplo no haber mínimo? De lo contrario, estamos adivinando. –
¿cómo le gusta el código? – plucury
¿Podría proporcionar un ejemplo que reproduzca la excepción? – sp00m