1

在我的 Java 项目中,一个单例类需要定期更新。这是通过在创建时设置计时器来完成的。但这意味着该update功能必须是公共的。只有计时器任务才能调用它。我该如何解决这个问题?

public class MySingleton {

    private TimerTask updateMySingletonTask = new UpdateMySingletonTask();
    private static Timer timer = new Timer();
    private MySingleton mySingleton = null;

    public MySingleton() {
        timer.schedule( updateMySingletonTask, 1000, 1000);
    }    

    public static MySingleton getInstance() {
        if ( mySingleton == null )
            mySingleton = new MySingleton();
        return mySingleton;
    }
    public update() {
        // ...
    }
}

class UpdateMySingletonTask extends TimerTask {
    @Override
    public void run() {
        MySingleton.getInstance().update();
    }
}

我是 Java 新手,如果您指出我的代码的其他(潜在)问题,我将不胜感激!

4

2 回答 2

4

您可以将 UpdateMySingletonTask 设为 MySingleton 的私有内部类或 MySingleton 内部的匿名内部类。然后 MySingleton 的所有方法,甚至私有方法,都将可供它使用。

于 2013-09-05T12:48:59.823 回答
3

您可以将其UpdateMySingletonTask转换为MySingleton私有内部类并从那里实例化它。

于 2013-09-05T12:49:08.533 回答