gpt4 book ai didi

java - 在GZIPWrapper中如何将if else替换为Optional.orElse?

转载 作者:行者123 更新时间:2023-12-01 19:46:31 24 4
gpt4 key购买 nike

大家好,使用 gzip 的工作人员,我遇到了一个问题。我有一个 GzipWrapper 并且有很多 if else,是否可以使用Optional.orElse 做类似的事情?通过简单的可选示例,我将其整理出来,但我不太明白如何在包装器中执行此操作。其中一种方法的示例就足够了)提前致谢)

我的包装器:

public class GZIPFilterResponseWrapper extends HttpServletResponseWrapper implements Closeable {

private PrintWriter printWriter;
private GZIPFilterResponseStream gzipStream;
private ServletOutputStream outputStream;

public GZIPFilterResponseWrapper(HttpServletResponse response) throws IOException {
super(response);
response.addHeader(CONTENT_ENCODING, GZIP);
gzipStream = new GZIPFilterResponseStream(response.getOutputStream());
}

@Override
public void flushBuffer() throws IOException {
if (nonNull(printWriter)) {
printWriter.flush();
}
if (nonNull(outputStream)) {
outputStream.flush();
}
super.flushBuffer();
}

@Override
public ServletOutputStream getOutputStream() throws IOException {
if (nonNull(printWriter)) {
throw new IllegalStateException(GZIP_CANNOT_WRITE);
}
if (isNull(outputStream)) {
outputStream = gzipStream;
}
return outputStream;
}

@Override
public PrintWriter getWriter() throws IOException {
if (nonNull(outputStream)) {
throw new IllegalStateException(GZIP_WRITER_ALREADY_HAS_CALLING);
}
if (isNull(printWriter)) {
printWriter = new PrintWriter(new OutputStreamWriter(gzipStream, getResponse().getCharacterEncoding()));
}
return printWriter;
}

@Override
public void close() throws IOException {
if (nonNull(printWriter)) {
printWriter.close();
}
if (nonNull(outputStream)) {
try {
outputStream.close();
} catch (IOException e) {
throw new IOException(e.getMessage());
}
}
}
}

最佳答案

可选不能替代条件逻辑。

添加了

可选,以便 API 有一种一致的方式来声明方法返回可能存在或不存在的值,而不返回 null。返回 null 很容易出现异常,并且在不阅读文档的情况下,没有简单的方法可以知道是否期望 null可选使该契约(Contract)变得明确。

因此,虽然可能可能可选替换条件逻辑,但这不太可能使您的代码变得更好或更容易阅读。

<小时/>

下面是一个例子,只是为了满足您的好奇心:

if (nonNull(printWriter)) {
printWriter.flush();
}

变成了

Optional.ofNullable(printWriter).ifPresent(PrintWriter::flush);

关于java - 在GZIPWrapper中如何将if else替换为Optional.orElse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53062058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com