Google Protocol Buffersを使用して、ビジネス オブジェクトの一部を (Java アプリで) シリアル化しています。チュートリアルで推奨されているように、メッセージのプロパティにアクセスするためのゲッター メソッドとセッター メソッドを実装する独自のクラスにメッセージ ビルダーをラップします。また、すべてのメッセージ フィールドを宣言しましたがoptional
、ここでも推奨事項に従っています。
これで、任意のラッパー クラスに任意のエンコードされたメッセージを渡すことができ、それらは常にそれらを解析して受け入れます。これにより、実際には含まれていないメッセージ タイプを表すラッパー オブジェクトが生成され、多くの偽物が発生します。
メッセージのバイナリ コンテンツをラッパー クラスにロードするときに、間違った型が渡された場合にエラーを発生させるにはどうすればよいですか?
私が現在考えている解決策は、すべてのメッセージが必要なタイプ フィールド (およびおそらくバージョン フィールド) を持つ基本メッセージを拡張することです。これにより、これらのフィールドが欠落している場合、生成されたビルダー クラスが例外をスローし、それらが存在する場合は、自分のコードをチェックインできます。ただし、これが私のコードにどのような影響を与えるかの評価はまだ完了しておらず、これが簡単になるかどうかもわかりません。