我在关于使用枚举创建单例类的stackoverflow上阅读了很多。
我一定错过了一些东西,因为我无法在任何地方到达INSTANCE。

这是我的代码:

public class UserActivity {

    private DataSource _dataSource;
    private JdbcTemplate _jdbcTemplate;

    static enum Singleton {
        INSTANCE;

        private static final UserActivity singleton = new UserActivity();

        public UserActivity getSingleton() {
            return singleton;
        }
    }

    public UserActivity() {
        this._dataSource = MysqlDb.getInstance().getDataSource();
        this._jdbcTemplate = new JdbcTemplate(this._dataSource);
    }

    public void dostuff() {
     ...
    }
}

在外面我想做
UserActivity.INSTANCE.getSingleton()

要么
UserActivity.Singleton.

但是eclipse的代码完成没有找到任何东西

谢谢!

最佳答案

诀窍是使枚举本身成为单例。尝试这个:

public enum UserActivity {
    INSTANCE;

    private DataSource _dataSource;
    private JdbcTemplate _jdbcTemplate;

    private UserActivity() {
        this._dataSource = MysqlDb.getInstance().getDataSource();
        this._jdbcTemplate = new JdbcTemplate(this._dataSource);
    }

    public void dostuff() {
     ...
    }
}

// use it as ...
UserActivity.INSTANCE.doStuff();

10-05 18:08