🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
如果某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象 > 不可变对象一定是线程安全的; > > 不可变性并不等于将对象中的所有域都声明为final类型,即使对象中的所有域都是final类型的,这个对象也仍然是可变的,因为在final类型的域中可以保存对可变对象的引用; ### 不可变对象 当满足以下条件时,对象才是不可变的: * 对象创建以后其状态就不能改变; * 对象的所有域都是final类型; * 对象是正确创建的\(在对象的创建期间this引用没有逸出\); ### 事实不可变对象 如果对象从技术上来看是可变的,但其状态在发布后不会改变,那么把这种对象称为“事实不可变对象” ### 可变对象 ![](../assets/20181010110929001.png)