2016-07-27 128 views
0

當我在main方法打開資源差異資源關閉

WebClient webClient = new WebClient(); 

的Eclipse顯示我警告Resource leak: 'webClient' is never closed。所以,我需要通過

webClient.close(). 

關閉資源,但是當我得到WebClient從方法

WebClient webClient = getWebCLient() 

public static WebClient getWebClient() { 
    WebClient webClient = new WebClient(); 
    ... 
    return webClient; 
} 

我沒有收到這樣的警告。爲什麼?

+3

因爲編譯器是不是足夠聰明,找出客戶端永遠不會關閉。 – immibis

+0

這意味着問題依然存在,只有IDE沒有告訴我這個問題。是否使用'try(WebClient webClient = getWebClient()){...'它是一個正確的解決方案? –

回答

1

在這種情況下,IDE並不足以提醒您。絕不意味着WebClient已不再被關閉。

如果WebClient工具AutoCloseable認爲,作爲一個很好的做法,將呼叫換到getWebClient()成一試,與資源的自動關閉

try (WebClient wc = getWebClient()) { 
    ... 
}