2010-09-03 61 views
3

我爲我的項目啓用了Checkstyle。它在方法參數上顯示黃色標記,並要求將其設置爲final。爲什麼?什麼目的?如果沒有指定會有什麼問題?爲什麼方法參數需要設置爲最終?

+1

像你使用的語言和平臺的小細節將是方便的。 – Oded 2010-09-03 12:50:37

+0

Java是我的語言。 – Jothi 2010-09-06 03:50:49

+0

像Checkstyle這樣的工具應該被視爲建立你的團隊認爲良好形式的建議或起點。我看到團隊浪費了大量的時間來回答靜態分析工具中的每個感知缺陷,而沒有將任何真正的人爲思想納入其中。這就是說,@Balazs對於「爲什麼你應該這樣做」這個問題的一部分有一個很好的答案。 – cjstehno 2015-04-15 18:19:05

回答

2

在情況下,存在在Checkstyle的一個規則,通常的回答是有,以及:http://checkstyle.sourceforge.net/config_misc.html

在這種情況下:

該方法的算法的執行期間改變的參數的值可以是混亂,應該避免。讓Java編譯器阻止這種編碼風格的一個好方法是聲明參數final。

+0

當最終標記方法params時,是否將它們複製到序列化目的的對象? – Behnil 2013-05-16 09:47:09

+1

方法參數就像局部變量一樣。它們與對象序列化無關。或者我誤解了你的問題。 – 2013-05-16 09:51:26

+0

是的,但是如果您想在方法中定義的匿名類中使用局部變量,則必須將其標記爲最終。這將變量複製到對象中(可以從匿名類訪問),並將其作爲副作用與對象一起暫存。 – Behnil 2013-05-16 10:20:23