如果我有一个这样的成员变量(在类的主体中声明)
private Dot[] dots=new Dot[numDots];
我遍历这个数组的所有成员,并且:
1)将每个Dot对象传递给另一个类的函数,其中:
2)如果满足某些条件,则将其传递给第3类的另一个函数
3)第3类改变了Dot对象的一些属性
那么当这个对象返回到原始/父类时,是否会保留对其属性的更改?或者它会被第二/第三功能视为局部变量?
是的,保留了对属性的更改.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
对象.