有没有办法让readExternal()使用另一个构造函数?

时间:2015-08-24 10:34:38

标签: java serialization externalizable

我试图从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"
    }
}

现在我从我得到的对象中复制所有字段,但它看起来很难看,我想知道是否会有更好的方式来做这样的事情?

1 个答案:

答案 0 :(得分:-2)

问题是您的encodedecode方法不一致。 decode是静态方法,encode不是。我的建议是decode非静态。