You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Timer类时schedule()/cancel()方法未定义的原因排查

问题原因及解决办法
  • 核心原因:类名冲突
    你自定义了名为Timer的类,和JDK自带的java.util.Timer重名了。代码里new Timer()实例化的是你自己的类,而这个自定义类并没有实现schedule()和cancel()方法,所以编译器报错。

  • 两种修复方式

    1. 修改自定义类名:把你的类改成其他名称,比如MyTimer,这样代码里的Timer会自动指向java.util.Timer,方法调用就正常了。
    2. 使用全限定类名:如果不想改类名,在实例化时明确指定JDK的Timer类,比如:
      public static java.util.Timer timer = new java.util.Timer();
      
      这样就能确保引用的是正确的类,调用它的方法不会报错。
  • 修复后的示例代码(修改类名方式)

    import java.util.*;
    public class MyTimer{
        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);
        }
    }
    

内容的提问来源于stack exchange,提问作者Tim Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:30:43