2017-07-25 17 views
0

我知道類似的東西之前已經被問過,但是我沒有找到任何解釋,爲什麼類型安全(由方法提供)在一個空的不可變列表中很重要。與Collections.emptyList()相比,Collections.EMPTY_LIST **失敗**嗎?

儘管我總是嘗試將類型/泛型正確,但我想了解使用常量時的真實情況會導致該方法阻止的錯誤。

我發現的最壞的結果是,該方法避免了a compilation error in specific cases,否則它只是避免了一個警告,根據我的理解,這在實踐中並不是什麼大問題:雖然我不知道JVM中的確切區別,我知道泛型是在編譯時使用的,然後這些類型被刪除並被替換。

那麼,總結一下,EMPTY_LIST是一個壞主意(TM)的例子?

回答

1

你是對的,沒有風險使用EMPTY_LIST本身。但是,您會收到警告。忽視警告是一種風險,因爲有一天你肯定會忽視那些不會被忽視的警告。

你可以@SuppressWarnings,但是你可以將註釋放在你的方法(甚至是類)上,然後回到第一點。

或者您創建一個局部變量並對其進行註釋。這非常詳細。

或者您創建一個返回該字段併爲其添加註釋的小方法。猜猜Collections.emptyList()做什麼。