我尝试使用Timer
类,当我使用schedule()
和cancel()
方法时,出现了两个错误,即Timer
类型的方法未定义。可能是什么原因?
import java.util.*;
public class Timer{
public static Timer timer = new Timer();
public static void main(String[] args){
TimerTask task = new TimerTask() {
@Override
public void run(){
System.out.println("Task is on");
timer.cancel();
};
};
long delay = 1000;
timer.schedule(task,delay);
}
1条答案
按热度按时间vwoqyblh1#
我怀疑你试图在这里使用util.Timer及其预定义的方法。然而,你也命名了你自己的类Timer。这里的问题是你对两个不同的东西使用了相同的名称。
编译器在搜索util包之前会先识别你自己的类,因此你创建的定时器是你自己创建的Timer类型的对象,这意味着它也会搜索你的类中的方法,而你的类显然没有定义方法。
防止这类错误的一个好方法是只使用类来创建对象。就我个人而言,我总是创建一个Main类来保存公共的静态void main,它当前在你的Timer类中。在那里,你还可以添加
public static Timer timer = new Timer();
行。因此,我只为对象创建名称不同于'Main'的类,它们总是有一个构造函数,即使我只使用默认版本。