如何以正确的方式管理资源的状态?
在java中,有时我们需要像这样打开和关闭资源
Scanner sc = new Scanner(File);
sc.close();
在复杂的场景中并不是那么容易。
我正面临这个问题
foo(){
return new ClosableResourse();
}
bar(ClosableResourse foo){
return new NotAccesibleFoo(foo);
}
两个实体使用这个 NotAccesibleFoo
. 我怎样才能正确地关闭我的 ClosableResource
上课?
bar()函数是唯一可以关闭它的地方,但在其他实体中是必需的,不能从它们访问。
1条答案
按热度按时间5f0d552i1#
这里的工作示例
考虑一下java的try with resources特性,下面的示例:
这里,如果
Bar
实现自动关闭,然后close()
自动调用。这可能与您的问题代码不完全匹配,但您可以close()
像这样:在这种情况下,客户机代码(例如
Example.java
这里)使用try with resources模式。