問題タブ [externalizable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 外部化 vs 一時的
transient
プロパティに単純にラベルを付けてシリアル化を防ぐことができることを考えると、外部化の目的について考えていました。しかし、さらに調査した結果transient
、実行時に何が必要かを判断する必要がある場合、このアプローチ (つまり、 としてラベルを付ける) は理想的ではない可能性があることがわかりました。理論的には、私には理にかなっています。ただし、実際には、Externalization が実行時にどのように使いやすいかはわかりません。つまり、クラスの定義中writeExternal()
および定義中に、何が必要かどうかを決定する必要があります。readExternal()
では、どのように実行時に使いやすいのでしょうか?
これを強調したドキュメントは次のとおりです。
Serializable インターフェースを実装することですべてが自動的に処理される場合、Externalizable インターフェースを実装してわざわざ 2 つのメソッドを定義する必要があるでしょうか? プロセスを完全に制御するだけです。わかりました...これを理解するためにサンプル例を見てみましょう。数百のフィールド (非一時的) を持つオブジェクトがあり、すべてではなく少数のフィールドのみを永続ストレージに格納したいとします。1 つの解決策は、他のすべてのフィールド (シリアル化するフィールドを除く) を一時的として宣言することであり、デフォルトのシリアル化プロセスが自動的にそれを処理します。しかし、これらのいくつかのフィールドが設計時に固定されず、代わりに実行時に条件付きで決定される場合はどうなるでしょうか。このような状況では、Externalizable インターフェイスを実装することがおそらくより良い解決策になるでしょう。
java - readExternal() に別のコンストラクターを使用させる方法はありますか?
readExternal
大きなオブジェクトをより効率的にシリアル化するために、インターフェイスから実装しようとしてExternalizable
いましたが、そのメソッド内で新しいオブジェクトを作成 (および使用) する方法がないことに気付きました。ポイントは、効率的な表現を解読する必要があるため、フィールドを直接割り当てることができないということです。コードは次のようになります。
今のところ、取得したオブジェクトからすべてのフィールドをコピーしますが、見栄えが悪く、このようなものにもっと良い方法があるかどうか知りたいですか?
java - Java での外部化
オブジェクトをファイルに入れようとしていて、後で Externalizable インターフェイスを使用して同じオブジェクトを読み取ろうとすると、 Car クラスの有効なコンストラクターがありませんという例外が発生します。
誰かがエラーが何であるかを説明できますか?