を取得するHashcode
の前に毎回serialization
とdeserialization
のオブジェクトを使用せずにJavaでreadResolve()
メソッドを使用するのはなぜですか? はここJavaでreadResolveメソッドを使用せずに、シリアル化の前とオブジェクトの直列化後に毎回同じハッシュコードを取得する理由は何ですか?
public class SerializedSingletonClass implements Serializable{
private static final long serialVersionUID = 18989987986l;
private SerializedSingletonClass(){};
private static class InstanceHelper {
private static SerializedSingletonClass obj = new SerializedSingletonClass();
}
public static SerializedSingletonClass getInstance(){
return InstanceHelper.obj;
}
}
テストクラス私のクラスである -
public class TestSingleton {
public static void main(String[] args) throws FileNotFoundException,
IOException, ClassNotFoundException {
// Test Serialization for singleton pattern
SerializedSingletonClass instanse1 = SerializedSingletonClass
.getInstance();
ObjectOutputStream obs = new ObjectOutputStream(new FileOutputStream(
"filename1.ser"));
obs.writeObject(instanse1);
obs.close();
ObjectInputStream objInputStream = new ObjectInputStream(
new FileInputStream("filename1.ser"));
SerializedSingletonClass instance2 = (SerializedSingletonClass) objInputStream
.readObject();
objInputStream.close();
System.out.println("instance1==" + instanse1.getClass().hashCode());
System.out.println("instance2==" + instance2.getClass().hashCode());
}
}
出力::
インスタンス1の== 1175576547
instance2 == 1175576547
シリアル化と逆シリアル化の方法を特にコード全体を共有 –
あなたが言及する出力を生成するスニペットには何も表示されません。どのようにしてハッシュコードを計算していますか、オブジェクトのシリアル化とデシリアライズはどのようにしていますか?また、オブジェクトの実際の値に基づいてハッシュ関数を正しく実装していれば、そのオブジェクトがデシリアライズされた後でも同じままになると期待できませんか?それは成功した[de]シリアライゼーションのようです。 –
これは私のテストクラスです。:: –