单克隆克隆攻击

时间:2012-11-15 16:20:18

标签: java reflection singleton clone

我看到很多人为单身人员实施clone方法,这些方法正在抛出CloneNotSupportedException。为什么呢?

例如,如何通过克隆或任何其他方式攻击? 顺便说一句。我已阅读有效的java并了解枚举。

public final class Elvis implements Serializable {

    public final static transient Elvis INSTANCE = new Elvis();

    private Elvis() {
        if(INSTANCE != null) {
            throw new IllegalStateException("This is a singleton. Don't try to instantiate it.");
        }
    }

    private Object readResolve() {
        //serialization protection
        return INSTANCE;
    }
}

2 个答案:

答案 0 :(得分:2)

否则,可以使用克隆创建单个类的多个对象。

答案 1 :(得分:0)

  

...抛出CloneNotSupportedException。为什么呢?

您可以查看文档here

protected Object clone() throws CloneNotSupportedException
  

抛出:   CloneNotSupportedException - 如果对象的类不支持Cloneable接口。覆盖clone方法的子类也可以抛出此异常,以指示无法克隆实例。