3

カスタムシリアライゼーションまたは外部化を使用して、クラスの一時フィールドをシリアライズすることは可能ですか?

例:Person名前フィールドが一時的なクラスがあります

transient String name;

以下の方法を使用してシリアル化することは可能ですか?

private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
4

2 に答える 2

0

writeObject / readObject では、transient を含む任意のフィールドを読み書きできます。ただし、最初にtransientでフィールドを非表示にしてから、カスタムシリアライゼーションで単純に書き込み/読み取りを行うのはあまり意味がありません。通常、一時フィールドはまったくシリアル化されないか、カスタム シリアル化による特別な処理が必要です。

外部化に関しては、一時的なものは無視され、すべてのフィールドが明示的に書き込まれ/読み取られます。

于 2013-09-04T05:23:27.247 に答える