枚举, 根据枚举的数量进行初始化, 只有一个枚举实例时, 只会初始化一次, 线程安全
单例模式能防止 反射调用攻击。 虽然也有缺点, 就是在初始化之前就进行反射调用。
class TestEnumSingleInstance {
private TestEnumSingleInstance(){}
public static TestEnumSingleInstance getInstance()
{
return EnumSingleInstance.instance.testEnumSingleInstance;
}
static enum EnumSingleInstance
{
instance;
private TestEnumSingleInstance testEnumSingleInstance ;
private EnumSingleInstance()
{
testEnumSingleInstance = new TestEnumSingleInstance();
}
}
public static void main(String[] args)
{
TestEnumSingleInstance t1 = TestEnumSingleInstance.getInstance();
TestEnumSingleInstance t2 = TestEnumSingleInstance.getInstance();
System.out.println(t1 == t2);
}
}