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

因为没有像错误所说的那样TimedLight包含在 Light 类中。要引用 Light,您需要引用它,为此您可以在构造函数中传递它。

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

TimedLight与嵌套类处于同一级别不是嵌套类。所以你无权访问 TimedLight 中的 Light 实例。Light

于 2013-03-28T12:16:38.093 回答