在我的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新手,如果您指出我的代码存在其他(潜在)问题,我将不胜感激!

最佳答案

您可以将UpdateMySingletonTask设置为MySingleton的私有内部类,也可以将其设为MySingleton的匿名内部类。然后,MySingleton的所有方法,包括私有方法,都将可用。

关于java - 如何使TimerTask访问单例私有(private)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18636673/

10-10 20:31