ここに私のサンプルコードがあります:
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 などの不変フィールドを外部化する必要がある一方で、その不変性も保持したいという実際の使用例を考えることができます。
では、この問題を解決する正しい方法は何ですか?