这是我的示例代码:
public class ExternalizableClass implements Externalizable
{
final int id;
public ExternalizableClass()
{
id = 0;
}
public ExternalizableClass(int i)
{
id = i;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeInt(id);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
id = in.readInt();
}
@Override
public String toString()
{
return "id: " + id;
}
}
它无法编译,因为id = in.readInt();
给Error:(36, 5) java: cannot assign a value to final variable id
. 但是,我可以想到真实的用例,其中不可变字段(例如 id)需要外部化,同时我们还希望保持其不变性。
那么解决这个问题的正确方法是什么?