这对我来说是一个有点令人困惑的问题,但我会尽力而为。
所以:
ArrayList<Object> fieldList = new ArrayList<Object>();
然后我将很多不同的变量转储到这个数组中:
fieldList.add(objectsURL); //string
fieldList.add(X); //int
fieldList.add(Y); //int
...
如果我改变变量,数组中的值也会改变——确认数组存储的是对内存的引用,而不是值本身。
但是,如果我然后从数组中检索数据然后设置...
Object object = ((String)this.fieldList.get(0));
然后设置对象
object = "meeep!"
objectsURL 未设置为“meep!” 而是保留其原始价值。
我认为这是因为“对象”不再引用原始变量,而是指向内存中新的不可变字符串。
我认为所有预期的 Java 行为....但是,我将如何设置实际的原始变量?这在java中可能吗?
所以,换句话说。如果只能访问“fieldList”,是否可以更改“objectsURL”的值?
因此,如果:
String objectsURL = "www.google.com"
fieldList.add(objectsURL);
有没有办法仅使用来自 fieldList 的引用将 objectsURL 设置为“www.stackoverflow.com”?我不想改变 fieldList 包含“objectsURL”的事实,我想改变变量“objectsURL”实际包含的字符串。
如果没有,是否有替代方法来实现相同的目标?
我希望我的问题能很好地解释这个问题。
我的用例是尝试为我的一堆对象创建一个序列化/反序列化系统。我希望将所有字段放入一个数组列表中,我可以检索以进行读取和写入....从而避免对 field[0]=blah 和 blah=field[0] 的长列表进行硬编码,然后继续每次我在另一个之前添加一个新字段时都需要重新编号。
(我不能使用 Java 的内置序列化,因为我使用的是 GWT,这只是客户端。)
谢谢,