シリアル化する必要がある不変の値の型を定義するクラスがあります。不変性は、コンストラクターで設定された最終フィールドに由来します。シリアル化を試みましたが、うまくいきました (驚くべきことに?) - しかし、方法がわかりません。
クラスの例はこちら
public class MyValueType implements Serializable
{
private final int value;
private transient int derivedValue;
public MyValueType(int value)
{
this.value = value;
this.derivedValue = derivedValue(value);
}
// getters etc...
}
クラスに引数なしのコンストラクターがない場合、インスタンス化して最終的なフィールドを設定するにはどうすればよいでしょうか?
(余談ですが、IDEAはこのクラスに対して「no serialVersionUID」検査警告を生成していなかったにもかかわらず、シリアライズ可能にしたばかりの他のクラスに対して警告を正常に生成したため、特にこのクラスに気付きました。)