0

一位面试官问我让类不可变的缺点。关于不可变对象占用的堆空间以及它如何降低 Java 应用程序的性能,我给出了一个答案。

在 Java 中使对象不可变还有哪些其他缺点?

4

4 回答 4

1

缺点是你必须创建一个新对象来改变它的“值”。如果你的类代表经常“改变”的东西,你会创建很多对象,给垃圾收集器增加负载。

于 2013-03-05T17:01:22.863 回答
0

您还应该考虑反序列化/物化不可变对象可能要困难得多,因为它通常涉及编写一个没有无参数构造函数的类。

于 2013-03-05T17:08:57.230 回答
0

让我们拿一个 BigInteger

BigInteger i1 = BigInteger.valueOf(1);

它有 add 方法,但你不能给它加 1,它是不可变的,所以你要做的是

BigInteger i2 = i1.add(i1);

即每次都创建一个新对象,即不可变BigInteger的算术运算非常慢

于 2013-03-05T17:10:10.640 回答
-1

如果没有应用程序要求您的对象是可变的,那么将其设置为不可变并没有什么缺点,您应该这样做。

如果有应用程序要求您的对象是可变的,则使其可变。

于 2013-03-05T16:59:43.740 回答