gpt4 book ai didi

java - 我应该关闭不是我创建的流吗?

转载 作者:行者123 更新时间:2023-11-30 07:51:30 24 4
gpt4 key购买 nike

如果我有流(InputStream 或 OutputStream),它不是我创建的而是作为参数传递给我的方法,我应该关闭该流吗?这是一个例子:

void method(InputStream in) {
try {
//Do something
}
finally {
if(in != null) {
in.close(); //Is this needed and correct?
}
}

最佳答案

真的,“视情况而定”。

作为一般规则,您不应关闭您没有责任打开的流,但要给出正确的答案,我们必须了解上下文。

责任委派很可能要求您的方法使用关闭 流 - 如果是这种情况,那么它应该在代码中明确。

如果您的方法名为 readFromStreamAndClose(InputStream in) 那么您的方法关闭流的事实就很明显了。

在您自己打开流的情况下,您始终可以使用 try-with-resources block ,它会为您关闭流 - 处于与创建流相同的抽象级别。在这种情况下 - 您的方法(在比打开流时更低的级别调用)不应关闭流。

关于java - 我应该关闭不是我创建的流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953805/

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