Почему это работает так, как это делает ... (контр-интуитивно для меня)Как работают объекты Java?
Test.java:
public class Test {
public TestObject obj1;
public TestObject obj2;
public Test() {
obj1 = new TestObject();
obj1.setInt(1);
obj2 = obj1;
System.out.println("Should be the same: " + obj1.getInt() + ", " + obj2.getInt());
obj1.setInt(2);
System.out.println("Should be different? (2, 1): " + obj1.getInt() + ", " + obj2.getInt());
obj2.setInt(3);
System.out.println("Should be different? (2, 3): " + obj1.getInt() + ", " + obj2.getInt());
}
public static void main(String[] args) {
new Test();
}
}
TestObject.java
public class TestObject {
int integer;
public void setInt(int n) {
integer = n;
}
public int getInt() {
return integer;
}
}
Это неожиданно приводит к «оба объекта» изменяются так, что «int integer» одинаково.
Логически (если моя логика имеет смысл), я бы предположил, что установка одного объекта на равную с другим была бы разовой вещью и что любое изменение в одном из объектов не изменило бы автоматически другое , Есть что-то, чего я не вижу, например, может быть, есть только один объект с двумя ссылками? Или что-то... ?
«Объекты не копируются» .. это имеет смысл тогда. Как я могу сделать так, чтобы объект был скопирован? Должен ли я сделать это вручную и создать второй объект? – kukac67
см. Http://en.wikipedia.org/wiki/Clone_(Java_method) – Jason