有人能用一个简单的例子向我解释java中可变对象和不可变对象之间的区别吗?
答案 0 :(得分:1)
可变对象是可以更改状态的对象。
Java中的状态是用数据字段实现的。
可变对象的一个例子:
class Counter {
private int i = 0;
public void increase() {
i++;
}
}
所以i
表示此类Counter
的内部状态。它可以随着时间的推移而改变:
Counter counter = new Counter();
counter.increase(); // somewhere in the code
另一方面,不可变对象是在创建/初始化对象后无法更改状态的对象。
这些对象不应该有“mutators” - setter,或者通常用于改变内部状态的方法。
以下是不可变对象的示例:
public final class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
如您所见 - 尽管此类维护状态(在字段name
和age
中),但在创建对象(调用构造函数)后无法更改此状态。