基于SO问题编写的最佳单例实现在Java中 - 即使用枚举创建单例 - 有什么区别/优点/缺点(构造函数省略)
public enum Elvis {
INSTANCE;
private int age;
public int getAge() {
return age;
}
}
Run Code Online (Sandbox Code Playgroud)
然后打电话 Elvis.INSTANCE.getAge()
和
public enum Elvis {
INSTANCE;
private int age;
public static int getAge() {
return INSTANCE.age;
}
}
Run Code Online (Sandbox Code Playgroud)
然后打电话 Elvis.getAge()
Jon*_*eet 95
假设你绑定到将使用它给出的任何对象的属性的东西 - 你可以很容易地传递Elvis.INSTANCE,但是你不能通过Elvis.class并期望它找到属性(除非它被故意编码找到类的静态属性).
基本上,只有在需要实例时才使用单例模式.如果静态方法可以正常工作,那么只需使用它们,不要打扰枚举.
Nic*_*las 68
当你的单身人士必须实现一个接口时,一个很大的优势.按照你的例子:
public enum Elvis implements HasAge {
INSTANCE;
private int age;
@Override
public int getAge() {
return age;
}
}
Run Code Online (Sandbox Code Playgroud)
附:
public interface HasAge {
public int getAge();
}
Run Code Online (Sandbox Code Playgroud)
它不能用静力学来完成......
归档时间: |
|
查看次数: |
75743 次 |
最近记录: |