创建一个单独的对象并根据 Java 中的对象引用对其进行编辑
Creating a seperate object and editing it from an object reference in Java
public class MyClass {
public MyClass(String a) {this.a = a;}
public void editString() {a = a + "anything";}
public String getString() {return a;}
}
public class test {
public test() {
MyClass myClass = new MyClass("stuff");
MyClass myNewClass = myClass;
myNewClass.editString();
System.out.println(myClass.getString());
System.out.println(myNewClass.getString());
}
}
两个对象都会return相同的东西("stuffanything"),我想这是因为Java通过引用传递对象变量,有没有办法避免这种情况?我只想编辑 myNewClass 的字符串。
非常感谢您的帮助!
myClass
和 myNewClass
指的是完全相同的对象。改变一个人的状态会改变另一个人的状态。您想要的是同一对象的副本。一种方法是定义一个从给定对象复制字段的复制构造函数:
public MyClass(MyClass myClass) {
this.a = myClass.a;
}
然后您可以创建对象的副本,如下所示:
MyClass myClass = new MyClass("stuff");
MyClass myNewClass = new MyClass(myClass);
myNewClass.editString();
System.out.println(myClass.getString());
System.out.println(myNewClass.getString());
输出:
stuff
stuffanything
public class MyClass {
public MyClass(String a) {this.a = a;}
public void editString() {a = a + "anything";}
public String getString() {return a;}
}
public class test {
public test() {
MyClass myClass = new MyClass("stuff");
MyClass myNewClass = myClass;
myNewClass.editString();
System.out.println(myClass.getString());
System.out.println(myNewClass.getString());
}
}
两个对象都会return相同的东西("stuffanything"),我想这是因为Java通过引用传递对象变量,有没有办法避免这种情况?我只想编辑 myNewClass 的字符串。
非常感谢您的帮助!
myClass
和 myNewClass
指的是完全相同的对象。改变一个人的状态会改变另一个人的状态。您想要的是同一对象的副本。一种方法是定义一个从给定对象复制字段的复制构造函数:
public MyClass(MyClass myClass) {
this.a = myClass.a;
}
然后您可以创建对象的副本,如下所示:
MyClass myClass = new MyClass("stuff");
MyClass myNewClass = new MyClass(myClass);
myNewClass.editString();
System.out.println(myClass.getString());
System.out.println(myNewClass.getString());
输出:
stuff
stuffanything