使用枚举的单身人士

ufk*_*ufk 23 java singleton enums

关于使用枚举创建单例类,我在stackoverflow上阅读了很多内容.我一定错过了什么,因为我无法到达任何地方的实习.

这是我的代码:

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() {
     ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在外面我想做

UserActivity.INSTANCE.getSingleton()
Run Code Online (Sandbox Code Playgroud)

要么

UserActivity.Singleton.
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Ste*_*n C 52

诀窍是使枚举本身成为单身人士.试试这个:

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();
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 13

INSTANCE是一个成员Singleton,而不是UserActivity- 所以你需要:

UserActivity.Singleton.INSTANCE.getSingleton();
Run Code Online (Sandbox Code Playgroud)

但是,你实际上并没有制作UserActivity单例 - 通常你会将类型本身设为枚举,而不是类型中嵌入枚举...