如果我将一个对象的实例传递给另一个类,它仍然被认为是该对象的同一个实例?

时间:2014-11-03 18:32:20

标签: java instance synchronized

我想知道c3ClassOneClassTwo的值是否被认为是该对象的同一个实例。我打算在单独的线程中从两个类调用ClassThree的{​​{1}}方法,并想知道它们是否会相互干扰。

check()

希望这是一个可以理解的例子和问题吗?

2 个答案:

答案 0 :(得分:2)

是。当你这样做时:

public static void setC3(ClassThree c3)

您没有传递ClassThree的副本 - 您正在将引用传递给原始c3。您通过引用传递对象(而不是复制的基元)。

您可以通过执行引用相等性检查来检查这一点,例如

if (c3 == myOriginalC3) {
   // it's the same
}

因为这会单独比较对象引用。

答案 1 :(得分:2)

是的,当你"传递一个物体"在Java中,您实际上只是将引用传递给同一个对象。 Java使用pass by reference。您正在谈论按值传递,Java不支持对象。