修改变量中的值

时间:2011-04-24 01:56:27

标签: java

我在java中有一个类有问题

此类是public并且是DefaultHandler的扩展 这个类的所有方法都是公共的......但变量是私有的......

我的问题是,如果我复制其他变量中的值并修改第二个变量,那么第一个变量也是如此。

就像静态变量..但它们不是静态的......任何想法!!!

提前致谢

3 个答案:

答案 0 :(得分:4)

这是因为您实际上正在修改同一个对象。例如,如果你有

Object obj = new Object();

Object obj2 = obj;

你实际上并没有复制任何东西,你只需要obj2“指向”(不是正确的术语,但它现在可以工作)到obj。对obj2的任何更改都将反映在obj中。因此,如果要实际复制它,则需要物理创建新对象,然后手动将所有值复制到新创建中。您可以实现prototype pattern来复制对象。基元不会以这种方式运行,因此如果您使用doubleint执行相同的操作,它将按照您期望的方式运行。

所有这些都有意义吗?

答案 1 :(得分:0)

您可能在通过引用传递和传递值时遇到问题。这个页面解释了我的意思http://www.cs.umd.edu/class/sum2004/cmsc420/sum4v3e01/node6.html

答案 2 :(得分:0)

您可能正在将引用复制到可更改对象,而不是对象本身;所以在复制之后,你有两个对同一个对象的引用。通过任一引用更改该对象将具有相同的效果。

我无法告诉你如何复制实际的对象,因为没有通用的方法来做,但许多类提供了复制构造函数或其他一些方法来复制自己。如果您需要帮助,则必须提供更多详细信息。