簡體   English   中英

關於實例變量與局部變量的Java問題

[英]Java question about instance variables vs. local variables

抱歉,如果我在這里遺漏了一些明顯的東西,但是我對正在發生的事情感到困惑。 我宣布Workout mWorkout; 作為我類頂部的實例變量。 到現在為止,它尚未初始化。

這段代碼有效: createWorkout返回一個Workout object ,該Workout object存儲在局部變量test ,然后從該mWorkout中設置實例變量mWorkout

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

而此代碼沒有:

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

即使createWorkout仍返回Workout對象, mWorkout仍為null

為了清楚起見,上面的代碼略有簡化。

嘗試與this mWorkout合格。

this.mWorkout = workoutFactory.createWorkout(); 

我的假設是,您定義了一個本地mWorkout ,該mWorkout用相同的名稱遮蓋了您的實例變量。

我敢打賭,在非工作版本某處startWorkout你聲明的方法范圍實例mWorkout被掩蓋實例字段。 如果嘗試了this.mWorkout = ...您可能會得到不同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM