LINUX.ORG.RU

История изменений

Исправление 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?