Widzę dziwne zachowanie, które wydaje się nie powinno się zdarzyć zgodnie z JMM. Mam klasy B, która rozszerza klasy A, ostateczne pole chronione w A, który jest zainicjowany w konstruktorze dostęp B klasy w jego konstruktora.Ostateczny stan pól, gdy uzyskano dostęp z podklasy
Ale w bardzo rzadkich przypadkach, kiedy mogę uzyskać w B. jakieś pomysły na NPE?
część kodu:
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());
//...
}
}
mógłbyś pisać minimalny uszkodzoną przykład? W przeciwnym razie zgadujemy. –
jaki jest kod? – plucury
Czy możesz podać przykład odtwarzający wyjątek? – sp00m