java如何创建一个不可变对象
时间: 2023-10-27 22:16:19 浏览: 62
Java中创建不可变对象需要遵循以下步骤:
1. 使用final关键字声明类和成员变量:final关键字可以防止类被继承和变量被修改。
2. 去除所有的setter方法:不提供setter方法可以防止对象被修改。
3. 使用构造函数初始化:使用构造函数初始化对象的所有成员变量。
4. 对于可变成员变量,需要进行深拷贝:如果成员变量是可变的,需要在构造函数中进行深拷贝,以防止对象被修改。
下面是一个示例代码:
```
public final class ImmutableObject {
private final int age;
private final String name;
private final List<String> hobbies;
public ImmutableObject(int age, String name, List<String> hobbies) {
this.age = age;
this.name = name;
this.hobbies = new ArrayList<String>(hobbies);
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public List<String> getHobbies() {
return Collections.unmodifiableList(hobbies);
}
}
```
在上面的示例中,我们使用了final关键字声明了类和成员变量,去除了所有的setter方法,并在构造函数中进行了深拷贝。在getHobbies方法中,我们使用了Collections.unmodifiableList方法来返回一个只读的hobbies列表,防止对象被修改。这样就创建了一个不可变对象。