5

Collection<myClass>ネットワーク経由でを送信しようとしています。オブジェクトとしてキャストし、この方法で送信しました。

ネットワークで渡されるアイテムをモデル化する最良の方法は、オブジェクトを使用することだと思います。これは、それが何であるかが事前にわからないためです (この例ではコレクションですが、場合によってはマップまたはその他のオブジェクトになります)。あなたが考えることができるもの)。これは、受信者と送信者だけが送信/受信しているものを知っており、オブジェクトを適切にキャストするのに対し、接続はバイトのみを気にし、それらを適切に送信する、C でのソケットの動作に似ています。

ただし、オブジェクトを受け取ったときに、それを にキャストし直そうとするとcollection<myObject>、安全でない型のキャストに関する警告が表示されます。@suppressWarnings を追加することもできますが、この警告を回避するためにこのキャストを行う最善の方法は何でしょうか?

ありがとう

4

2 に答える 2

3

あなた (ほとんどの場合 Java) は、受け取ったオブジェクトの型を知らないので、安全にキャストすることは不可能です。

あなたができること:

  • それがあなたが思っているオブジェクトであることを本当に確認する必要があります
  • try-catchキャッチするブロックを追加するかもしれませClassCastExceptionん(念のために)
  • そして最後に、@SuppressWarningsJava の安全性チェックをオーバーライドしたいので、アノテーションを追加します (あなたがよく知っていると思うからです)。
于 2013-01-28T22:05:08.610 に答える
1

JSON や XML など、シリアル化に中間形式を使用することを検討してください。JSON との間でオブジェクトをマーシャリングおよびアンマーシャリングするためのライブラリがたくさんあります。たとえばGSON。無料で得られるのは、言語の相互運用性です。これは、ネットワークの反対側では、任意の言語のプログラムが存在する可能性があるためです。

于 2013-01-28T22:06:38.460 に答える