美文网首页
java创建不可变类的规则

java创建不可变类的规则

作者: 小线亮亮 | 来源:发表于2017-10-21 12:48 被阅读0次
  1. State of immutable object can not be modified after construction, any modification should result in new immutable object.
  2. All fields of Immutable class should be final.
  3. Object must be properly constructed i.e. object reference must not leak during construction process.
  4. Object should be final in order to restrict sub-class for altering immutability of parent class.

要写出Immutable类,需要遵循以下几个原则:

1)immutable对象的状态在创建之后就不能发生改变,任何对它的改变都应该产生一个新的对象。

2)Immutable类的所有的属性都应该是final的。

3)对象必须被正确的创建,比如:对象引用在对象创建过程中不能泄露(leak)。

4)对象应该是final的,以此来限制子类继承父类,以避免子类改变了父类的immutable特性。

5)如果类中包含mutable类对象,那么返回给客户端的时候,返回该对象的一个拷贝,而不是该对象本身(该条可以归为第一条中的一个特例)

使用Immutable类的好处:
1)Immutable对象是线程安全的,可以不用被synchronize就在并发环境中共享

2)Immutable对象简化了程序开发,因为它无需使用额外的锁机制就可以在线程间共享

3)Immutable对象提高了程序的性能,因为它减少了synchroinzed的使用

4)Immutable对象是可以被重复使用的,你可以将它们缓存起来重复使用,就像字符串字面量和整型数字一样。你可以使用静态工厂方法来提供类似于valueOf()这样的方法,它可以从缓存中返回一个已经存在的Immutable对象,而不是重新创建一个。

相关文章

  • java中的不可变类及其创建规则

    java中的不可变类及其创建规则 不可变类顾名思义就是这个类被实例化之后不可被重新赋值,java提供的八个包装类和...

  • java创建不可变类的规则

    State of immutable object can not be modified after const...

  • Java之StringBuilder

    Java中的StringBuilder表示可变的字符序列。由于Java中的String类会创建不可变的字符序列,因...

  • Java的不可变类(缓存实例)

    不可变类 不可变类的意思是在创建该类的实例后,该实例的实例变量是不可以改变的。Java提java.lang.Str...

  • Java- 关于对象的思考

    Java- 关于对象的思考 不可变对象一旦创建,就不能改变。为防止用户修改对象,可以定义不可变类。定义不可变类需...

  • 使可变性最小化--EffectiveJava小结(15)

    不可变类:每个实例的所有属性都必须再创建该实例时就提供,并且再对象的整个生命周期内固定不变。 不可变类的五个规则:...

  • 为什么 Java 要把字符串设计成不可变的

    String是Java中一个不可变的类,所以它一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不...

  • Java中的不可变类

    什么叫不可变类? 《Effective Java》将不可变类定义如下: An immutable class is...

  • Object-C 学习笔记

    类的申明放在 .h 文件中,类的实现放在 .m 文件中 类分为可变类、不可变类2.1. 必须在不可变对象创建时,设...

  • Servlet

    Servlet是一个接口,定义了java类被浏览器访问到tomcat的规则 创建一个Servlet实现类 创建Ja...

网友评论

      本文标题:java创建不可变类的规则

      本文链接:https://www.haomeiwen.com/subject/prjiuxtx.html