У меня естьНазначение классов в Java
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
Будет SC2 изменения из-за SC1 (когда sc1 изменяется)? Если нет, то как это сделать?
У меня естьНазначение классов в Java
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
Будет SC2 изменения из-за SC1 (когда sc1 изменяется)? Если нет, то как это сделать?
Да любые изменения в sc1
будут отражены в sc2
как обе точки к тому же объекту.
Так сказать, если это структура SomeClass
public SomeClass {
String name;
//getter setter
}
, если вы сделаете это
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
sc1.setName("Hello");
System.out.println(sc2.getName()); // this will print hello since both sc1 and sc2 are pointing to the same object.
Но если вы сделаете это:
sc1.setName("Hello");
sc1 = null;
System.out.println(sc2.getName()); // this will print hello since only sc1 is null not sc2.
Да Каус, потому что они оба относятся к одному и тому же объекту.
sc2
и sc1
отдельные переменные, которые содержат как ссылки на тот же объект (это важное различие!). Любое изменение состояния объекта будет одинаково видимым через обе ссылки. Так
sc2.setField("hi!");
sc1.getField(); // returns "hi!"
Однако, изменения в ссылках сами не оказывают никакого влияния на другой:
sc2 = null;
sc1.getField(); // still returns "hi!", no exception
Его нравится - давать SC1 дополнительное имя SC2.
Возможно, вы попытались –