Цитата(positiveman @ 10.3.2012, 22:00 ) | | Этот код изменяет свойство в копии объекта из массива, но как изменить его в объекте, находящемся в массиве? |
Проверял? Точно проверял? Проверь ещё раз. Объекты в коллекциях хранятся и выдаются по ссылкам. После вызова get(row) возвращается не копия объекта, а ссылка на существующий.
Цитата(positiveman @ 10.3.2012, 22:00 ) | | А такой код, конечно, работать не будет :( |
Оба примера кода идентичны и делают одно и то же - берут ссылку на объект из коллекции и меняют свойство по ссылке. А второй не работает, потому что у тебя коллекция не типизированная, и из коллекции возвращается Object. Либо типизируй коллекцию:
| Код | ArrayList<Surface> list = new ArrayList<Surface>();
|
либо явно приводи тип после получения объекта из коллекции:
| Код | ((Surface) list.get(row)).setA(a);
|
Цитата(Samotnik @ 11.3.2012, 00:39 ) | Использовать метод set: http://docs.oracle.com/javase/1.4.2/docs/a...st.html#set(int, java.lang.Object) |
Не имеет смысла. Не нужно замещать объект в коллекции новым, если достаточно изменить свойство у имеющегося. |