在我的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/