【发布时间】:2011-08-22 08:39:56
【问题描述】:
为了线程安全,是否应该是故意不可变的 java 类“final”的所有字段,包括超字段,还是没有修饰方法就足够了?
假设我有一个带有非最终字段的 POJO,其中所有字段都是某个不可变类的类型。这个 POJO 有 getter-setter 和一个设置一些初始值的构造函数。如果我通过淘汰修饰符方法扩展这个 POJO,从而使其不可变,扩展类会是线程安全的吗?
【问题讨论】:
-
淘汰修饰符方法修饰符方法是什么意思?向所有二传手抛出异常?这将违反Liskov substitution principle。但是是的,这个类将是线程安全的。
-
是的,抛出运行时异常或用空主体覆盖它们可能带有一些日志记录。我知道它违反了 LSP。
标签: java thread-safety immutability