但是,如果我克隆对象,然后再更新值,那么如何访问原始对象,因为我返回了克隆对象
你没有。至少不是来自来电者。
我会在这里冒昧地说我们正在谈论一个列表,所以:
public class MyClass {
private List<String> strings;
public List<String> getStrings(){
// returns a copy, so member list is still intact
return new ArrayList<String>(strings);
}
public void addString(String newString) {
strings.add(newString);
}
public void dropString(String oldString) {
strings.remove(oldString);
}
public void replaceString(String oldString, String newString) {
dropString(oldString);
addString(newString);
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,您可以通过所属类控制对成员操作的访问。如果你真的想要一个任何人都可以获取和更新的公共成员(不是我推荐的),那么删除 getter 并创建 member public。