不可变类设计

不可变类设计

  • final的使用:
    • 修饰属性或者private而且没有set方法,保证为只读属性;
    • 修饰类,防止子类破坏不可变性;
    • String的底层是private final char[] value;
      • 当传入char数组的时候,会给value复制一份value【保护性拷贝:防止共享】;
  • finall的原理:
    • final变量的赋值之后,会加入写屏障【flush】,以保证读取的时候不是默认值【因为赋值是两步操作,首先是默认值,之后才是所赋值】;
    • 对于final的静态变量
      • 当在short范围内,会直接放入当前栈中【直接存储在字节码指令流中】;
      • 当超过short范围,会放入常量池中;
      • 当没有final修饰的时候,会在堆中;
  • 无状态:没有成员变量,那么一定是线程安全的;
posted @ 2025-03-24 18:43  烟雨断桥  阅读(6)  评论(0)    收藏  举报