作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试用 Java 创建一个单例类。 Java5 及以上版本的最佳可用解决方案似乎是使用 enum
。但我不确定如何使用 enum
将我的类转换为单例类。以下是我的简化类(class):
public class Employee {
private int id;
private String name;
public Employee() {}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}
当我在网上搜索答案时,我发现了以下代码:
public enum EasySingleton{
INSTANCE;
}
但是我的类变量和方法在哪里?我不确定如何实现。我知道我们可以为 enum
提供方法,但是我的变量会去哪里呢?对此的任何帮助将不胜感激。
P.S.:请不要争论单例是邪恶的还是反模式的。我只是想知道如何使用 enum
创建单例。
最佳答案
类和枚举之间的区别并没有那么大。我将第一行代码更改为 public enum
而不是 public class
并添加了您的实例的名称。
public enum Employee { // changed "class" to "enum"
INSTANCE; // added name of the (single) instance
private int id;
private String name;
Employee() {} // removed "public"
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}
请记住,如果你想在一个虚拟机中多次运行你的代码,单例、枚举实例、静态的东西可能会在以后阻碍你。考虑在您的主类中创建一个 Employee
的实例并将其传递给您的应用程序。
除此之外,枚举还有一些其他的特殊功能:
扩展
另一个类(只能实现
)static values()
和 getName()
)关于java - 如何使用枚举创建单例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30940814/
我是一名优秀的程序员,十分优秀!