不可变对象与final类型
创建后状态不能被修改的对象叫做不可变对象。不可变对象天生就是线程安全的,可以放心的共享与发布,不需要创建防御性拷贝。
可变对象传递给不可信的代码,或者将它发布到不可信代码可以找到的地方,都是危险的,有可能被改变状态或者会保留引用并在其他线程中修改状态。
不可变性并不简单地等于将对象中的所有域都声明为final类型,所有域都是final类型的对象依旧可以是可变的,因为final域可以获得一个可变对象的引用。
创建后状态不能被修改的对象叫做不可变对象。不可变对象天生就是线程安全的,可以放心的共享与发布,不需要创建防御性拷贝。
可变对象传递给不可信的代码,或者将它发布到不可信代码可以找到的地方,都是危险的,有可能被改变状态或者会保留引用并在其他线程中修改状态。
不可变性并不简单地等于将对象中的所有域都声明为final类型,所有域都是final类型的对象依旧可以是可变的,因为final域可以获得一个可变对象的引用。