2013-03-28 71 views
0

我試圖創建一個在時間到期時更改布爾值的Timer類,但是我正在努力尋找一種方法來保持Light類的相同「實例」(自我會有不止一個)我懷疑靜態類和方法是答案,因爲我總共有大約5個燈在使用同一實例時從外部類調用內部類方法

這裏的代碼,我已經包括了我試圖從實際線程中調用的方法輕類可供參考。

import java.util.TimerTask; 

public class Light extends RoomObject{ 
    //Constructors 
    public Light(String n, String r, boolean s){ 
     super(s, r, n); 
    } 

    //Class methods 

    public String toString(){ 
     return "Light|" + super.getName() + "|" + super.toString() + "|"; 
    } 

    public void setState(boolean s){ 
     super.setState(s); 
    } 
} 

class TimedLight extends TimerTask{ 

    public void run() { 

    } 
} 

NB。我想調用的setState方法從線程

回答

1

你可以嘗試這樣的事情

class TimedLight extends TimerTask{ 
Light light ; 
TimedLight (Light light){ 
this.light = light; 
} 
public void run() { 
light.setState(..); 

} 
} 
1

因爲TimedLight的錯誤說沒有封閉在燈類。爲了引用Light,你需要引用它,並且你可以在構造函數中傳遞它。

public TimedLight(Light light){ 
    light.setState(..); 
} 

TimedLight同一水平Light和不嵌套類。所以你不能訪問TimedLight中Light的實例。

相關問題