0

時間が経過するとブール値を変更する Timer クラスを作成しようとしていますが、Light クラスの同じ「インスタンス」を保持する方法を見つけるのに苦労しています (複数あるため) 静的クラスとメソッドを疑います合計で約5つのライトがあるので、答えは次のとおりです

これがコードです。参照用に、実際の Light クラス内のスレッドから呼び出そうとしているメソッドを含めました。

    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() {

    }
}

注意。スレッドから setState メソッドを呼び出そうとしています

4

2 に答える 2

1

このようなものを試すことができます

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

 }
}
于 2013-03-28T12:13:46.047 に答える
1

エラーが示すように Light クラスに含まれていないためTimedLightです。Light を参照するには、それへの参照が必要であり、そのためにコンストラクターで渡すことができます。

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

TimedLightネストされたクラスではなく、同じレベルLightあります。そのため、TimedLight の Light のインスタンスにアクセスできません。

于 2013-03-28T12:16:38.093 に答える