首页 > 解决方案 > 当方法退出时,该方法中的 Timer 对象是否存在?

问题描述

我最近正在阅读 Java Core。以下是 Java Core Volume I 第 6.4.5 节的代码:

public void start(int interval,boolean beep){
    class TimePrinter implements ActionListener{
        public void actionPerformed(ActionEvent event){
            System.out.println("At the tone,the time is " + new Date());
            if(beep){
                Toolkit.getDefaultToolkit().beep();
        }
    }
    ActionListener listener=new TimePrinter();
    Timer t=new Timer(interval,listener);
    t.start();
}

我不明白的有两点:

首先,书上说listener引用传递给javax.swing.Timer构造函数,启动计时器,然后start()方法退出。此时,start方法的beep参数变量已经不存在了。 为什么beep参数会消失?

其次,当start(interval,beep)方法退出时,Timer对象(即t)是否存在?非常感谢!

标签: javaswingobjectreferencestack

解决方案


推荐阅读