关于实例变量与局部变量的Java问题

时间:2011-09-16 19:41:22

标签: java android

很抱歉,如果我在这里遗漏了一些明显的东西,但我对发生了什么感到困惑。我将Workout mWorkout;声明为我班级顶部的实例变量。到目前为止,它尚未初始化。

此代码有效:createWorkout返回Workout object,它存储在局部变量test中,然后设置实例变量mWorkout

public void startWorkout() {
    Workout test = workoutFactory.createWorkout(); 
    mWorkout = test;
}

这段代码没有:

public void startWorkout() {
    mWorkout = workoutFactory.createWorkout(); 
}

mWorkout仍为null,即使createWorkout仍在返回Workout个对象。

为清晰起见,上面的代码略有简化。

2 个答案:

答案 0 :(得分:0)

尝试使用mWorkout符合条件this

this.mWorkout = workoutFactory.createWorkout(); 

我的假设是您定义了一个本地mWorkout shadowing您的实例变量具有相同的名称。

答案 1 :(得分:0)

我敢打赌,在startWorkout的非工作版本的某个地方,你已经声明了mWorkout的方法范围实例,它掩盖了实例字段。如果您尝试this.mWorkout = ...,可能会得到不同的结果。