一部の C# コードを Java に変換していますが、using
ステートメントが含まれています。この機能を Java で複製するにはどうすればよいですか? try
、catch
、ブロックを使用するつもりでしたが、finally
最初に皆さんに確認しておこうと思いました。
1591 次
3 に答える
8
そのとおりです。ブロックを使用する AC# は、とにかくそのための構文糖衣です。IDisposable に最も近い Java はCloseable
.
Java 7 に同様の機能を追加するためのAutomatic Resource Managementと呼ばれる提案 (既に部分的にコミットされています) があります。 )。
于 2010-07-05T16:01:19.150 に答える
2
Java でのリソース処理の標準的なイディオムは次のとおりです。
final Resource resource = acquire();
try {
use(resource);
} finally {
resource.dispose();
}
try
よくある間違いには、例外をキャッチして同じステートメントを共有しようとしたり、それに続いてnull
s を混乱させたりすることが含まれます。
Java 構文は冗長ですが、Execute Around Idiomはこのような構造を抽出できます。
executeWith(new Handler() { public void use(Resource resource) {
...
}});
于 2010-07-05T20:16:34.900 に答える
0
null チェックを忘れないでください。つまり
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 に答える