基于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()
我最近在接受以下代码的采访时被问及java相关问题,因为我对Java很新,而且几乎没有Java代码,所以我真的不知道下面的代码是做什么的.
问题是使用以下代码选择描述最糟糕事情的选项:
public class Bolton {
private static Bolton INST = null;
public static Bolton getInstance()
{
if ( INST == null )
{
INST = new Bolton();
}
return INST;
}
private Bolton() {
}
}
Run Code Online (Sandbox Code Playgroud)
以下是此问题的选项
- 可以创建多个Bolton实例
- 永远不会创造博尔顿
- 构造函数是私有的,无法调用
- 可以对值进行垃圾回收,并且对getInstance的调用可能会返回垃圾数据
以上哪个选项是正确的?为什么?