Как это возможно?окончательный не null поле становится null
public class WritableByteChannelEndpoint extends Endpoint<ByteBuffer> {
private final WritableByteChannel channel;
public WritableByteChannelEndpoint(WritableByteChannel channel, Observable<ByteBuffer> observable) {
super(observable);
this.channel = Objects.requireNonNull(channel);
}
// ...
@Override
public void onNext(ByteBuffer input) {
assert channel != null;
// ...
}
}
Я получаю ошибку утверждения в этой строке. По какой-то причине, что я не могу понять, channel
имеет значение null.
Это происходит каждый раз в то время, когда я выполняю модульные тесты с помощью JUnit.
ли теоретически возможно, что все WritableByteChannelEndpoint
экземпляра уже очищаться и channel
устанавливается в нуль, а какой-то другой объект все еще есть (слабая?) Ссылка на него?
Вы уверены, что это не гонка? Создает ли конструктор суперкласса экземпляр вообще? – hexafraction
Да, супер-конструктор переходит к некоторой задаче запуска async. –
ОК, понял. Эта задача async вызывает 'onNext' до того, как дочерний конструктор даже закончил. Если хотите, вы можете написать это как ответ, я бы согласился. –