2011-10-11 37 views
23

我有一個內部類中的私有方法,它是私有的我想使用SafeVarargs註釋。但是,我需要有靜態或最終的方法。爲什麼私人方法也需要是最終的?這不是多餘的嗎?java @SafeVarargs爲什麼私有方法需要是最終的

+0

如果我理解正確,你可以使用@Safe可變參數的構造函數,靜態方法,最後的方法和由於Java-9私人 – gstackoverflow

回答

15

這是多餘的,你提出了一個很好的觀點。

我認爲最終或靜態要求的真正原因是強制該方法不能被覆蓋,因此子類不能篡改數據,使得@SafeVarargs註釋在定義上無用的方法。

但是,雖然它是多餘的,但它並不是一個糟糕的決定 - 很多時候,程序員會盡可能地使每個方法都是私有的,然後根據需要慢慢打開課程。如果此方法在private範圍內標記爲final,那麼如果方法必須打開,它仍然可以使用@SafeVarargs註釋,並且只更改訪問級別。如果故意刪除了最終版本,您將得到編譯時錯誤,但是如果您已經擁有了它,那麼除非私自訪問(在基於團隊的環境中可能不是您自己),否則不會混淆關於爲什麼刪除「私人」修改器突然使代碼不再編譯。

+1

如果錯誤信息將類似於「無效的java.lang。 SafeVarargs註釋。實例方法...不是最終的也不是私有的「,對於那些刪除」private「的人不會有任何困惑。 –

4

此功能Coin項目2的一部分,將avalaible在Java的未來9月2017年

它的呼叫接受@SafeVarargs的私有方法。

Link.

相關問題