为什么单例必须扩展一个超类时,不推荐使用枚举

开源之夏第三届火热来袭高校学生参与赢万元奖金!>>>

为什么单例必须扩展一个超类时,不推荐使用枚举

Effective java 里用枚举实现单例模式中最后有一段话如果你的单例必须扩展一个超而不是 Enum(尽管你可以声明一个 Enum 来实现接口)你就不能使用这种方法
一直没搞懂,这样做是会导致什么安全问题吗?

enum SongletonEnum implements testF {
    SONGLETON_ENUM;

    @Override
    public void said() {
        System.out.println("hh");
    }
}

enum SongletonEnum2{
    SONGLETON_ENUM;
}

回答

This approach(n.方法,途径;vt.接近) is similar to the public field approach, but it is more concise, provides the serialization machinery for free, and provides an ironclad guarantee against multiple instantiation, even in the face of sophisticated serialization or reflection attacks.
上面说明了哈,因为不管你是用接口的方式实现,还是通过继承都会出现多个实例的情况,如果是多个实例了,那就不是单例的说法了。