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 に答える