0
已經討論了局部變量final
或effectively final
的區別here。但我不明白爲什麼它是在Java 8中引入的。對我來說,它似乎只是讓程序員可以自由地忽略關鍵字final
,但將變量有效地視爲最終的。邏輯上沒有變化,只是幫助'懶'程序員不需要寫final
。爲什麼在Java 8中引入'有效最終'?
這不就是一個退步,因爲現在一個有效的最終變量會遺漏關鍵字,而不會向代碼的讀者指出它。那麼,甲骨文有什麼理由讓這裏的最終關鍵字被忽略嗎?
它不引入比較。引入的是從Lambda表達式訪問這些變量的能力。 'Effectively final'只是一種描述實際上沒有改變的變量的方式,而它是在Java創建後存在的變量。 – RealSkeptic 2014-11-03 13:51:05
http://stackoverflow.com/questions/20938095/difference-between-final-and-effectively-final – Akshay 2014-11-03 13:51:06
少代碼說更多不稱爲「懶惰」,而是「表現力」。值得慶幸的是,Java已經開始欣賞這種美德。 – 2014-11-03 13:59:18