我有一個內部類中的私有方法,它是私有的我想使用SafeVarargs註釋。但是,我需要有靜態或最終的方法。爲什麼私人方法也需要是最終的?這不是多餘的嗎?java @SafeVarargs爲什麼私有方法需要是最終的
23
A
回答
15
這是多餘的,你提出了一個很好的觀點。
我認爲最終或靜態要求的真正原因是強制該方法不能被覆蓋,因此子類不能篡改數據,使得@SafeVarargs註釋在定義上無用的方法。
但是,雖然它是多餘的,但它並不是一個糟糕的決定 - 很多時候,程序員會盡可能地使每個方法都是私有的,然後根據需要慢慢打開課程。如果此方法在private範圍內標記爲final,那麼如果方法必須打開,它仍然可以使用@SafeVarargs註釋,並且只更改訪問級別。如果故意刪除了最終版本,您將得到編譯時錯誤,但是如果您已經擁有了它,那麼除非私自訪問(在基於團隊的環境中可能不是您自己),否則不會混淆關於爲什麼刪除「私人」修改器突然使代碼不再編譯。
+1
如果錯誤信息將類似於「無效的java.lang。 SafeVarargs註釋。實例方法...不是最終的也不是私有的「,對於那些刪除」private「的人不會有任何困惑。 –
4
相關問題
- 1. Java:私有方法vs最終類
- 2. 爲什麼方法參數需要設置爲最終?
- 3. 爲什麼我們允許在java中擁有最終的主要方法?
- 4. 爲什麼我們需要java中的私有嵌套接口?
- 5. 爲什麼我需要現實生活中的私人方法?
- 6. 爲什麼主要方法需要是靜態的?
- 7. 爲什麼Java內部類需要外部類的變量是最終的?
- 8. 在JAVA主要方法中String array的需要是什麼
- 9. 爲什麼@autowired在spring中不需要私有實例變量的setter方法?
- 10. 爲什麼沒有android應用程序需要主要方法
- 11. 爲什麼在一個方法中最終需要但不在類內
- 12. 爲什麼要用最後的修改,當我們在方法類有私人
- 13. 爲什麼antlr3 c#解析器方法是私有的?
- 14. 爲什麼接口方法不能是「靜態」和「最終」?
- 15. 爲什麼Resharper想要駱駝案也是私人方法?
- 16. 測試私有方法,澄清需要
- 17. 防止node.js腳本終止的最有效方法是什麼?
- 18. 爲什麼最終的實例變量需要初始化,當一個最終的局部變量沒有?
- 19. 爲什麼Route類中的Ember.js API方法TransitionTo是私有的?
- 20. 爲什麼spinner listener需要onNothingSelected方法?
- 21. 爲什麼CustomFieldSerializer需要靜態方法?
- 22. 爲什麼我們需要addRequestHeader方法?
- 23. 爲什麼我們需要ContinueWith方法?
- 24. 爲什麼需要DataBind()方法?
- 25. 爲什麼我們需要Buffer.isBuffer方法?
- 26. 爲什麼申請方法需要parens?
- 27. 爲什麼需要使用'addChildViewController:'方法
- 28. 爲什麼Settings.System.put/get方法需要ContentResolver?
- 29. 爲什麼JSON不需要setXXX方法?
- 30. 爲什麼你需要重載方法?
如果我理解正確,你可以使用@Safe可變參數的構造函數,靜態方法,最後的方法和由於Java-9私人 – gstackoverflow