0

私はJavaアプリ(ファットクライアント、サーバー、データベース)を持っています。すべてのサーバー メソッド呼び出しは Vector を返します (サーバー コードはもともと何年も前に作成されたものであり、一貫性を保つためにそのまま残されています)。ベクトルは、呼び出しに関係なく常に 2 つの位置を返します。最初の位置は、メソッド呼び出しの処理中にサーバーで発生した問題をクライアントに警告するエラー オブジェクト (または null) です。2 番目の位置は、必要なデータです。オブジェクトの ArrayList、文字列、int などの可能性があります。太ったクライアントが探しているものは何でも。

フットプリントを減らし、サーバー呼び出しのパフォーマンスを向上させようとしています。私が見ていることの 1 つは、返された Vector を削除して、それらを何かに置き換えることです。私の質問は何ですか。前述のとおり、このコレクションは常に 2 桁の長さで、位置 0 はエラー オブジェクト (エラーがない場合は null)、位置 1 は "my data" です。ソートする必要はありません。基本的には、2 つのパラメーターを返す (サーバーからクライアントに移動するときにそれらをシリアル化する) メソッドに使用されます。

位置 0 と 1 をクライアントに転送する以外の機能は必要ありません。このコレクションがクライアントにヒットすると、位置 0 のエラーが検査され、位置 1 が引き出され、そこに格納されているオブジェクトとして呼び出し元のコードに渡されます。 .

助言がありますか?

4

1 に答える 1

0

クラスを作成します。

class MeaningfulNameForTheResult
{
  public Error error;
  public Object result;
}

結果としてそれを使用します。

必要に応じて、プロパティをプライベートにするかどうかに応じて、セッター/ゲッターを追加するかどうかを指定しますが、一般的な考え方は、シリアル化する 2 つのプロパティを持つクラスを作成することです。

編集:多分...必要に応じて、そのオブジェクトを完全に削除することもできます。すべてが問題ない場合は目的の結果オブジェクトを返し、何か問題がある場合はエラー オブジェクトを返します。クライアントで、オブジェクトのシリアル化を解除してから、型を確認します。そうであれば、それがinstanceof Errorエラーであることがわかります。それ以外の場合は、結果です。

于 2012-05-21T17:38:40.783 に答える