Pourquoi ce travail comme il le fait ... (contre-intuitive pour moi)Comment fonctionnent les objets 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;
}
}
Ceci, dans des résultats étonnamment les "deux objets" changent de sorte que "int integer" soit le même. Logiquement (si ma logique a un sens), je suppose que régler un objet pour qu'il soit égal à un autre serait une chose unique, et que tout changement dans l'un des objets ne changerait pas automatiquement l'autre . Y at-il quelque chose qui me manque, comme peut-être il n'y a vraiment qu'un seul objet avec deux références? Ou quelque chose... ?
« Aucun objet copiés » .. qui fait sens alors. Comment ferais-je en sorte qu'un objet soit copié? Dois-je le faire manuellement et créer un second objet? – kukac67
voir http://en.wikipedia.org/wiki/Clone_(Java_method) – Jason