我试图创建一个在时间到期时更改布尔值的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() {
}
}
NB。我试图从线程
调用setState方法答案 0 :(得分:1)
您可以尝试这样的事情
class TimedLight extends TimerTask{
Light light ;
TimedLight (Light light){
this.light = light;
}
public void run() {
light.setState(..);
}
}
答案 1 :(得分:1)
因为TimedLight
未包含在Light类中,因为错误说明了。对于引用Light,你需要引用它,为此你可以在构造函数中传递它。
public TimedLight(Light light){
light.setState(..);
}
TimedLight
与Light
在相同级别,而不是嵌套类。因此,您无权访问TimedLight中的Light实例。