leozhangblogs

导航

还在用Java8?一文教你跟着Spring源码学习Java全部语法新特性!

JDK 1.5

volatile 常用

源码位置:com.azure.core.http.rest.StreamResponse#consumed

    private volatile boolean consumed;
    private final HttpResponse response;

...

    /**
     * The content of the HTTP response as a stream of {@link ByteBuffer byte buffers}.
     *
     * @return The content of the HTTP response as a stream of {@link ByteBuffer byte buffers}.
     */
    @Override
    public Flux<ByteBuffer> getValue() {
        if (response == null) {
            return Flux.using(() -> this, ignored -> super.getValue(), response -> response.consumed = true);
        } else {
            return Flux.using(() -> response, HttpResponse::getBody, r -> {
                consumed = true;
                r.close();
            });
        }
    }

    /**
     * Disposes the connection associated with this {@link StreamResponse}.
     */
    @Override
    public void close() {
        if (this.consumed) {
            return;
        }
        this.consumed = true;
        if (response == null) {
            final Flux<ByteBuffer> value = getValue();
            value.subscribe().dispose();
        } else {
            response.close();
        }
    }

Jdk 17

关键字

permits、sealed

源码位置:org.springframework.http.HttpStatusCode

    public sealed interface HttpStatusCode extends Serializable permits DefaultHttpStatusCode, HttpStatus {
        int value();
        ···
    }

posted on 2025-09-04 10:22  不想上班的小谁  阅读(9)  评论(0)    收藏  举报