インタフェースのデフォルトの方法でシリアライズ(BWC)

liotur;

私はインターフェイス持っAを、このインターフェイスの実装たAIMP1

インタフェースはで実装されている1つの方法有するAIMP1蛋白質を実装たAIMP1は、いくつかのメンバーとなしのserialVersionUIDを持っています。

新しいデフォルトの方法は、インタフェースに追加される場合に何が起こるか質問Aでそれを上書きせずに、前記AIMP1私はここに壊れなかったことがありますか?私は、シリアライズ/デシリアライゼーションのと同じ結果を持っていますか?

ピーターLawrey:

方法シリアライズされていませんが、インターフェイスは、いずれかのシリアル化されていないだけでなく。

直列化の目的は、オブジェクトに関連付けられたデータではなく、それの振る舞いを記述することである(これは、明示的にもデータとしてエンコードされていない限り、例えばGregorianCalendarののタイムゾーン)

クラスはので、それらは効果がありません変更したものをインターフェイスまたはメソッド直列化されたオブジェクトに表示する方法はありません。

(あなただけのシリアル化のために使用される方法についての推測かもしれません)

あなたは簡単にそれを変更することはできませんので、Javaシリアルは、エンコードしたクラスのスーパークラス階層を行います。

しかし、ほとんどのシリアライズライブラリはこれをしないと、あなたは、この情報を見ることができないもあなたがそれらを変更した場合、それは問題ではありません。欠点は、多くのシリアライズライブラリがあなたのクラス階層で同じフィールド名を複数回持つサポートしていないということですが、Javaのシリアライズはありません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=213727&siteId=1