我想知道 ClassOne
和 ClassTwo
中 c3
的值是否被认为是该对象的同一个实例。我计划在单独的线程中从两个类调用 ClassThree
的 check()
方法,并想知道它们是否会相互干扰。
public class ClassOne{
private ClassThree c3 = new ClassThree();
public ClassOne(){}
public void passThreeToTwo{
ClassTwo.setC3(c3);
}
}
//------------------------------------------------------*
public class ClassTwo{
private static ClassThree c3 = null;
public ClassTwo(){}
public static void setC3(ClassThree c3){
this.c3 = c3;
}
}
//------------------------------------------------------*
public class ClassThree{
public ClassThree(){}
public synchronized check(){}
}
public static void main(String[] args){
ClassOne c1 = new ClassOne();
C1.passThreeToTwo();
}
希望这是一个可以理解的例子和问题?
最佳答案
是的。当您这样做时:
public static void setC3(ClassThree c3)
您没有传递 ClassThree
的副本 - 您传递的是对原始 c3 的引用。您通过引用传递对象(与被复制的基元相反)。
您可以通过执行引用相等性检查来检查这一点,例如
if (c3 == myOriginalC3) {
// it's the same
}
因为这是单独比较对象引用。
关于java - 如果我将一个对象的实例传递给另一个类,它仍然被认为是该对象的同一个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720670/