簡體   English   中英

我應該如何在Java中復制C#的'using'語句的功能?

[英]How should I replicate the functionality of C#'s 'using' statement in Java?

我正在將一些C#代碼轉換為Java,它包含using語句。 我應該如何在Java中復制此功能? 我打算trycatchfinally阻止,但我想我先和你們一起檢查。

那是對的。 無論如何,AC#using block只是語法糖。 與IDisposable最接近的Java是Closeable

有一個提議(已經部分提交),稱為自動資源管理 ,用於向Java 7添加類似的功能。它將在幕后使用try-finally,並建議創建一個新的Disposable接口(這將是Closeable的超接口) )。

Java中資源處理的標准習慣是:

final Resource resource = acquire();
try {
    use(resource);
} finally {
    resource.dispose();
}

常見的錯誤包括嘗試共享相同的try語句,異常捕獲和后續操作使得與null等混亂。

雖然Java語法很冗長,但Execute Around Idiom可以提取這樣的結構。

executeWith(new Handler() { public void use(Resource resource) {
    ...
}});

不要忘記空檢查! 也就是說

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM