1

ここで説明されている OCSF フレームワークを使用して、クライアント側のソケットで Java のオブジェクト ストリーミングを使用する sendToServer(Object msg) を使用して originalMssg を送信し、サーバー側で sendToClient(Object msg) を実行すると仮定します。ここで、msg オブジェクトはそのクライアントから受け取ったものと同じです。

ここで、クライアント側のコードでサーバーからメッセージが返されたときに呼び出される次のコールバックを考えてみましょう。

@Override
protected void handleMessageFromServer(Object msg) {
  System.out.println(msg.equals(originalMssg));
    
}
  1. 上記のシナリオでは、常に true と出力されますか?
  2. そうでない場合、どのような場合にそうではありませんか?常にtrueを返すようにすることは可能ですか?
  3. すべての場合に false を返す場合、サーバーから戻ってきたときにそれを認識できるように、どのように msg オブジェクトにマークを付けることができますか?
4

2 に答える 2

1

(これは純粋に OSCF Web サイトと javadocs ... YMMV を読んだことに基づいています)

Web サイトによると、OSCF はシリアライズ可能なプレーン Java オブジェクト (POJO) を送受信します。このことから、オブジェクトはシリアライズ可能な任意msgのクラスのインスタンスであると推測できます。

上記のシナリオでは、常に true と出力されますか?

言うことはできません。実際のクラスがどのように実装するかによって異なりますequals

そうでない場合、どのような場合にそうではありませんか?

とは言えません(上記参照)。

常にtrueを返すようにすることは可能ですか?

equalsうーん...送受信しているクラスのメソッドの実装を変更する必要があります。

すべての場合に false を返す場合 ...

その前提条件が成り立つかどうかはわかりません (上記参照)。


結論。はmsg、自分で実装または選択したクラスのインスタンスです。要件に合った動作で実装/選択するのはあなた次第equalsです...クライアントからサーバーへの往復を行ったオブジェクトのインスタンスとの(明らかに)比較を含みます。

于 2013-04-21T12:10:34.333 に答える
1

の主なOSCF目的は、文字列または文字列の配列を送信することです...まず、オブジェクトがserializable.

次に、作成したクラスごとequalsに必要なメソッドがあります。@Override

1) いいえ。

2)ほとんどいつでも false 、文字列をオブジェクトに送信しようとすることができ、trueになるはずです。

3)私の答えの紹介をご覧ください。

于 2013-04-21T12:17:29.690 に答える