单例使用枚举 [英] singleton using enum
本文介绍了单例使用枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一定错过了一些东西,因为我无法到达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(){
...
}
}
//将其用作。 ..
UserActivity.INSTANCE.doStuff();
I read a lot on stackoverflow regarding the creation of singleton classes using enum. I must have missed something because i can't reach the INSTANCE anywhere.
this is my code:
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() {
...
}
}
and outside I'm trying to do
UserActivity.INSTANCE.getSingleton()
or
UserActivity.Singleton.
but eclipse's code completion doesn't find anything
thanks!
解决方案
The trick is to make the enum itself the singleton. Try this:
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();
这篇关于单例使用枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文