Вы не можете сделать это в Java.Все, что вы делаете - это извлекаете значение из ArrayList
.Это значение является ссылкой, но это ссылка в терминологии Java, которая не совсем такая же, как в C ++.
Это ссылочное значение копируется в s1
, после чего оно полностью не зависит от значения вArrayList
.Когда вы изменяете значение s1
для ссылки на новую строку в этой строке:
s1 += "modificated";
, которая вообще не меняет значение в ArrayList
.
Сейчасесли бы вы использовали изменяемый тип, такой как StringBuilder
, вы могли бы использовать:
StringBuilder builder = list.get(0);
builder.append("more text");
System.out.println(list.get(0)); // Would include "more text"
Здесь вы не измените значение в ArrayList
- которое все еще простоссылка - но вы изменяете данные внутри объекта, на который ссылается значение.