我想知道c3
inClassOne
和in的值ClassTwo
是否被视为该对象的同一实例。我计划在单独的线程中从两个类中调用ClassThree
´scheck()
方法,并想知道它们是否会相互干扰。
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
}
因为这仅比较对象引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句