当前位置:  开发笔记 > 编程语言 > 正文

Java对象引用/范围问题

如何解决《Java对象引用/范围问题》经验,为你挑选了1个好方法。

如果我有一个这样的成员变量(在类的主体中声明)

private Dot[] dots=new Dot[numDots];

我遍历这个数组的所有成员,并且:

1)将每个Dot对象传递给另一个类的函数,其中:

2)如果满足某些条件,则将其传递给第3类的另一个函数

3)第3类改变了Dot对象的一些属性

那么当这个对象返回到原始/父类时,是否会保留对其属性的更改?或者它会被第二/第三功能视为局部变量?



1> Eddie..:

是的,保留了对属性​​的更改.Java是100%传递值,但是,当您传递一个对象时,传递的"值"实际上是指向该对象的指针.因此,当您更改方法中的对象时,您将更改传入的实际对象.

也就是说,如果您有以下方法,那么调用方法将看到更改:

private void updateMyDot(final Dot aDot) {
  aDot.dotColor = new Color(255,255,255);
}

但如果您执行以下操作,则调用方法将不会看到更改.

private void updateMyDot(/* not final */ Dot aDot) {
  aDot = new Dot();
  aDot.dotColor = new Color(255,255,255);
}

在第二个示例中,调用者不会看到任何更改,也不会看到新创建的Dot对象.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有