0

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;
    }
}
4

2 に答える 2

2

そうしないと、クローンを使用してシングルトン クラスの複数のオブジェクトを作成できます。

于 2012-11-15T16:23:34.547 に答える
0

... CloneNotSupportedException をスローします。なんで?

ここでドキュメントをチェックアウトできます:

protected Object clone() throws CloneNotSupportedException

例外: CloneNotSupportedException - オブジェクトのクラスが Cloneable インターフェースをサポートしていない場合。clone メソッドをオーバーライドするサブクラスも、この例外をスローして、インスタンスを複製できないことを示すことができます。

于 2012-11-15T16:28:17.823 に答える