История изменений
Исправление vbr, (текущая версия) :
Для интереса нашёл в JDK пример, похожий на мой код - класс HttpRequest (также есть похожий паттерн в классе HttpClient):
public Optional<Duration> timeout() {
return timeout == null ? Optional.empty() : Optional.of(timeout);
}
...
public HttpRequest.Builder timeout(Duration duration) {
requireNonNull(duration);
if (duration.isNegative() || Duration.ZERO.equals(duration))
throw new IllegalArgumentException("Invalid duration: " + duration);
this.duration = duration;
return this;
}
Что любопытно: у этого класса есть возможность создать Builder из готового HttpRequest, но возможности обнулить установленное поле timeout уже нет.
Исходная версия vbr, :
Для интереса нашёл в JDK пример, похожий на мой код - класс HttpClient:
public Optional<Authenticator> authenticator() {
return Optional.ofNullable(authenticator);
}
...
public HttpClientBuilderImpl authenticator(Authenticator a) {
requireNonNull(a);
this.authenticator = a;
return this;
}
К сожалению у этого класса нет возможности создать Builder из готового HttpClient, поэтому посмотреть, как они планировали бы обнулять поле, не получилось.
Может кто-то знает ещё какие-то классы, добавленные относительно недавно в JDK, в которых есть паттерн Builder?