为什么说我们不需要克隆不可变的class?
Why is it said that we dont need to clone an immutable class?
不可变 class 只是一个实例无法修改的 class。不可变 class 适用于缓存目的,并且是线程安全的。不可变对象是其状态一旦启动就不会改变的实例。
然而,对象克隆是指创建对象的精确副本。它创建当前对象的 class 的新实例,并使用该对象相应字段的内容初始化其所有字段。
现在,问题来了,为什么说我们不需要克隆一个不可变的class?
是否因为创建已用于缓存目的的数据的精确副本会增加系统中创建的垃圾并可能减慢应用程序的速度。 或其他一些相关答案在?
如果要在不更改原始对象状态的情况下更改副本的状态,通常会创建对象的副本(克隆)。
由于不可变 类 对象的状态无法更改,因此您可以使用原始对象而无需承担任何更改其状态的风险。
如果您已经有一个不可变的对象 class,那么再有一个功能相同的对象就没有意义了,您可以在任何地方只使用一个实例。另外,如果你克隆它,你只会使用两倍的内存而没有额外的收益。
不可变 class 只是一个实例无法修改的 class。不可变 class 适用于缓存目的,并且是线程安全的。不可变对象是其状态一旦启动就不会改变的实例。
然而,对象克隆是指创建对象的精确副本。它创建当前对象的 class 的新实例,并使用该对象相应字段的内容初始化其所有字段。
现在,问题来了,为什么说我们不需要克隆一个不可变的class?
是否因为创建已用于缓存目的的数据的精确副本会增加系统中创建的垃圾并可能减慢应用程序的速度。 或其他一些相关答案在?
如果要在不更改原始对象状态的情况下更改副本的状态,通常会创建对象的副本(克隆)。
由于不可变 类 对象的状态无法更改,因此您可以使用原始对象而无需承担任何更改其状态的风险。
如果您已经有一个不可变的对象 class,那么再有一个功能相同的对象就没有意义了,您可以在任何地方只使用一个实例。另外,如果你克隆它,你只会使用两倍的内存而没有额外的收益。