@[toc]
什麼是不變性
- 如果對象在被建立後,狀态就不能被修改,那麼他就是不可變的
- 具有不變性的對象,一定是線程安全的,我們不需要采取任何額外的安全措施,也能保證線程安全
final的作用
- 被final關鍵字修飾的類不能被繼承,被final關鍵字修飾的類屬性和類方法不能被覆寫(重寫);
3種用法:修飾方法,變量,類
修飾變量 :不能被改變

修飾方法:
- 構造方法不允許修飾
- 不可被重寫,也就是不能被override,即便子類有同樣名字的方法,那也不是override
你所不知道的final
修飾類:
- final關鍵字修飾的類不能被繼承
-
你所不知道的final
注意點
- final 修飾對象的時候,隻有對象的引用不可變,而對象本身的屬性是可以變的
- final使用原則,良好的程式設計習慣
不變性和final的關系
- 基本資料類型,确實被final修飾的就是不可變的
- 但是對于對象類型,需要該對象保證自己被建立後,狀态永遠不變才可以
不可變的第二種情況
把變量寫線上程内部,----棧封閉
- 在方法裡建立局部變量,實際上是存儲在每個線程私有棧空間,而每個棧空間不能被其他線程通路到,是以,不會出現線程安全問題,這就是著名的 “棧封閉” 技術
你所不知道的final