我正在将一些 C# 代码转换为 Java,它包含该using
语句。我应该如何在 Java 中复制此功能?我打算使用try
, catch
,finally
块,但我想我会先与你们核实。
问问题
1591 次
3 回答
8
这是正确的。无论如何,使用块的 AC# 只是语法糖。与 IDisposable 最接近的 Java 等效项是Closeable
.
有一个名为Automatic Resource Management的提议(已经部分提交),用于向 Java 7 添加类似的功能。它将在幕后使用 try-finally,并提议创建一个新的 Disposable 接口(这将是 Closeable 的超级接口)。
于 2010-07-05T16:01:19.150 回答
2
Java中资源处理的标准习惯用法是:
final Resource resource = acquire();
try {
use(resource);
} finally {
resource.dispose();
}
常见的错误包括尝试try
与异常捕获共享相同的语句,并继而将 s 弄得一团糟null
。
尽管Java 语法很冗长,但Execute Around Idiom可以提取这样的结构。
executeWith(new Handler() { public void use(Resource resource) {
...
}});
于 2010-07-05T20:16:34.900 回答
0
不要忘记空值检查!也就是说
using(Reader r = new FileReader("c:\test")){
//some code here
}
应该翻译成类似
Reader r = null;
try{
//some code here
}
finally{
if(r != null){
r.close()
}
}
而且java中的大多数close()都会抛出异常,所以 如果你希望你的代码更像c# ,请检查DbUtils.closeQuietly
于 2010-07-05T17:41:48.083 回答