7
|
Andriy Drozdyuk Pickels · 技术社区 · 14 年前 |
![]() |
1
7
现在不行;Java仍然没有为这个模式添加语法糖。尽管如此,它还是不会像以前那样干净
这也使它符合
|
![]() |
2
26
Java7引入了一个新特性来解决这个问题:“try with resources” http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html Close resource quietly using try-with-resources 语法是将资源放在try关键字后面的括号中:
|
![]() |
3
3
正如扎曼所说,秘密是最终使用;一般来说:
注意事项:
如果您有多个资源要分配,那么一般的模式是干净的,但对于初学者来说,这通常并不明显:
,依此类推,如果您有更多的资源要分配。如果你有两个,你肯定会试图避免尝试的深巢。。。最后是陈述。不要。您可以获得资源释放和异常处理的权利,而无需嵌套这么多尝试。。。最后一句话,但要想正确无需嵌套尝试。。。最后比深窝还要难看。 如果您经常需要使用一组资源,可以实现基于functor的方法来避免重复,例如:
你可以这样使用:
您可以在整个Spring中找到此类代码,例如: |
![]() |
4
2
还有一种方法是使用这样的通用包装器:
注意:Java方式就是您刚才描述的方式。另一个只是为了“好玩”和实验:
在 理论上,你可以重复使用它来执行其他事情,比如删除一个项目:
或者更新它
full working demo 这证明了这个概念(而且不做任何其他事情) |
|
5
2
try with resources是在Java7中引入的,在此之前,您必须使用try finally块。请参阅此处的文档: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html |