4

一部の C# コードを Java に変換していますが、usingステートメントが含まれています。この機能を Java で複製するにはどうすればよいですか? trycatch、ブロックを使用するつもりでしたが、finally最初に皆さんに確認しておこうと思いました。

4

3 に答える 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よくある間違いには、例外をキャッチして同じステートメントを共有しようとしたり、それに続いてnulls を混乱させたりすることが含まれます。

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 に答える