我想知道c3
和ClassOne
中ClassTwo
的值是否被认为是该对象的同一个实例。我打算在单独的线程中从两个类调用ClassThree
的{{1}}方法,并想知道它们是否会相互干扰。
check()
希望这是一个可以理解的例子和问题吗?
答案 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不支持对象。