1

readExternal大きなオブジェクトをより効率的にシリアル化するために、インターフェイスから実装しようとしてExternalizableいましたが、そのメソッド内で新しいオブジェクトを作成 (および使用) する方法がないことに気付きました。ポイントは、効率的な表現を解読する必要があるため、フィールドを直接割り当てることができないということです。コードは次のようになります。

public class BigObject implements Externalizable {

    //lots of fields and methods...

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(this.encode()); //encodes to a BigInteger
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        BigInteger code = (BigInteger) in.readObject();
        BigObject bo = BigObject.decode(code);
        // now I would like this to be "bo"
    }
}

今のところ、取得したオブジェクトからすべてのフィールドをコピーしますが、見栄えが悪く、このようなものにもっと良い方法があるかどうか知りたいですか?

4

1 に答える 1