我已经专业地使用Java编程超过十年了。这是我曾经试图追踪的最奇怪的错误之一。我有一个私有成员,我对其进行初始化,然后它会自行更改为null。
public class MyObject extends MyParent
{
private SomeOtherClass member = null;
public MyObject()
{
super();
}
public void callbackFromParentInit()
{
member = new SomeOtherClass();
System.out.println("proof member initialized: " + member);
}
public SomeOtherClass getMember()
{
System.out.println("in getMember: " + member);
return member;
}
}
输出:
proof member initialized: SomeOtherClass@2a05ad6d
in getMember: null
如果您运行此代码,显然它将正常工作。在我的实际代码中,只有这三个出现(如果计算println,则为五个),并且呈现出确切的模式。
我是否遇到了JVM中的某些错误?除非我错了,否则父类无法干扰私有成员,并且无论我在代码行之间放置什么,都无法在不使用标识符“member”的情况下更改成员的值。