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

标签 java serialization 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"
    }
}

现在我复制了我得到的对象中的所有字段,但它看起来很丑,我想知道是否有更好的方法来实现这样的事情?

最佳答案

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

关于java - 有没有办法让 readExternal() 使用另一个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180163/

相关文章:

java - 如何写入不显示为串行设备的 USB

java - Spring MVC URL 映射

c# - Json反序列化失败

java - 可串行化和可外部化。反序列化时构造函数调用的区别

java - hibernate 锁定表

java - 使用 JScrollPane 和 JPanel 创建可滚动的 JFrame

c++ - Protobuf重复字段反序列化

java - 将可序列化对象传递给 Activity 时的转换无效

java - 为什么我没有 NotSerializableException?

java - 可以通过序列化进行定制,那么为什么要外部化呢?