我尝试从Task
发送一个int,但方法updateMessage
只允许String
。我试图转换.toString()
,但IDE发送错误“无法解析符号”。
有什么办法吗?为什么我不能在.toString()
内使用Task
?
bkgTimer = new Service<Void>() {
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
int count = 0;
while (play){
count++;
updateMessage(count.toString());//Cannot resolve symbol
if (isCancelled()) {
break;
}
Thread.sleep(1000);
}
return null;
}
};
}
};
bkgTimer.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
chronoLabel.textProperty().unbind();
}
});
chronoLabel.textProperty().bind(bkgTimer.messageProperty());
提前致谢..
答案 0 :(得分:1)
编译错误与您在Task
内的事实无关。问题是您不能从基本类型调用方法,例如int
,double
,boolean
等。只有引用类型(即对象)有方法,类可以定义静态方法。
相反,请使用Integer
类中的静态toString(int)
方法:
updateMessage(Integer.toString(count));