一位采访者问我关于使类不可变的缺点。我给出了关于不可变对象占用的堆空间以及它如何降低Java应用程序性能的答案。
在Java中使对象不可变的其他缺点是什么?
答案 0 :(得分:1)
缺点是您必须创建一个新对象来更改其“值”。如果你的类代表经常“改变”的东西,你将创建大量的对象,将负载放在垃圾收集器上。
答案 1 :(得分:0)
如果没有应用程序要求您的对象是可变的,那么使其不可变是没有缺点的,您应该这样做。
如果有一个应用程序要求你的对象是可变的,那么让它变得可变。
答案 2 :(得分:0)
您还应该考虑反序列化/实现不可变对象可能要困难得多,因为它通常涉及编写没有无参数构造函数的类。
答案 3 :(得分:0)
让我们拿一个BigInteger
BigInteger i1 = BigInteger.valueOf(1);
它有添加方法,但你不能添加1,它是不可变的,所以你做的是
BigInteger i2 = i1.add(i1);
也就是说,每次都会创建一个新对象,即使用不可变BigInteger的算法非常慢