Вы не сохраняете объект в списке. Вы сохраняете ссылку в списке.
И да, если вы сделаете изменение объекта с помощью любой ссылки, это изменение будет видно, однако в противном случае вы получите тот же объект.
То же самое верно для присваивания, передачи аргументов и т. Д .:
StringBuilder builder = new StringBuilder();
StringBuilder builder2 = builder;
builder.append("foo");
System.out.println(builder2); // Prints foo
Здесь значения builder
и builder2
являются ссылками на один и тот же объект StringBuilder
- поэтому, добавив строку к данным в объекте через builder
, вы можете получить ту же информацию через builder2
.