GWTのIsSerializableインターフェイスの目的は何ですか(RPCメカニズムに関して)。なぜそれがそのようになっているのか、そしてなぜデフォルトのJavaSerializableタグ付けインターフェースが機能しないのかについての良い説明を見つけることができませんでした。
2 に答える
GWTシリアル化のドキュメントによると、両方ともSerializable
機能します。IsSerializable
次のすべてが当てはまる場合、ユーザー定義クラスはシリアライズ可能です。
- IsSerializableまたはSerializableに割り当てることができます。これは、これらのインターフェイスの1つを直接実装するため、または次のようなスーパークラスから派生するためです。
- すべての非最終的で非一時的なインスタンスフィールドは、それ自体がシリアル化可能であり、
- GWT 1.5の時点では、デフォルト(引数がゼロ)のコンストラクター(アクセス修飾子を含む)が必要であるか、コンストラクターがまったくない必要があります。
ただし、重要な違いの1つは、セキュリティ上の理由から、すべてのSerializable
クラスをコンパイル時に生成されるシリアル化ポリシーに含める必要があるのに対し、IsSerializable
クラスにはその要件がないことです。
純粋にGWTに関心があり、たとえばWebアプリケーションと別のアプリケーション間でモデルクラスを共有しない場合は、モデルクラス/DTOに実装してもらうことをお勧めしますIsSerializable
。
オブジェクトを他のプログラムと共有する場合 は、標準のJavaライブラリ関数であるSerializableを使用してください。
But if you only want to pass it between the Server and the client in GWT then use IsSerializable. It helps you make sure that you don't enable to start passing it to places it shouldn't go.