私の関数メッセージのバイト配列とオブジェクトの型を取得するために、バイトからオブジェクトを復元する必要があります。 JavaにC++のようなキャストはありますか?C++の<reinterpret_cast>に似たJavaでキャストされていますか?
答えて
いいえ、代わりにserializationを使用できます。
いいえ、オブジェクトをシリアル化する必要があります。 http://java.sun.com/developer/technicalArticles/Programming/serialization/
これは、オブジェクトデータが他の言語でも読めると予想される場合には役立ちません。
リンクが壊れました。 – Hubbitus
Javaには任意のバイトブロックを持ち、コンパイラに "これをX型のオブジェクトとして扱う必要があります"と言う方法はありません。
最初に作成した「オブジェクトに復元する」バイトはどのようにして作成されましたか?
Javaには、オブジェクトをバイトストリームに変換するためのシリアル化メカニズムがあり、その逆もあります。
私はあなたがここで何を求めているのか正確には分かりませんが、Javaの各オブジェクト(これには配列も含まれます)には実行時の型情報が関連付けられています。したがって、オブジェクトを別の型にキャストすると、新しい型が一致しない場合はすぐに例外がスローされます。これはC/C++とは非常に異なります.C/C++では、メモリのブロックを必要なオブジェクトとして扱うようにコンパイラに指示することができます。
任意のバイトセットをオブジェクトに変換するコードを探している場合、またはその逆に変換するコードを探している場合は、組み込みの直列化機能を使用するか、独自の変換を使用して別の方法で行う必要がありますコード。
ここにあなたが望むものを達成するための方法があります。
public static Object toObjectFromByteArray(byte[] byteArr) {
if (byteArr == null) {
return null;
}
Object resultObj = null;
ByteArrayInputStream bin = null;
ObjectInputStream ooin = null;
try {
bin = new ByteArrayInputStream(byteArr);
ooin = new ObjectInputStream(bin);
resultObj = ooin.readObject();
}
catch (Exception ex) {
throw new RuntimeException(ex);
}
finally {
try {
if (ooin != null) {
ooin.close();
}
if (bin != null) {
bin.close();
}
}
catch (IOException ex1) {
ex1.printStackTrace();
}
}
return resultObj;
}
public static byte[] toByteArray(Object obj) {
ByteArrayOutputStream barr = null;
ObjectOutputStream oout = null;
byte[] bytearr = null;
try {
byte[] b2 = null;
barr = new ByteArrayOutputStream(10000);
oout = new ObjectOutputStream(barr);
oout.writeObject(obj);
oout.flush();
oout.close();
bytearr = barr.toByteArray();
}
catch (Exception ex) {
throw new RuntimeException(ex);
}
finally {
try {
if (oout != null) {
oout.close();
}
if (barr != null) {
barr.close();
}
}
catch (IOException ex1) {
ex1.printStackTrace();
}
}
return bytearr;
}
- 1. AS3、Java、C++のどちらの方が似ていますか?
- 2. JavaアルゴリズムはCまたはjavaで実装されていますか?
- 3. Java - インターフェイスにキャストし、キャストされたタイプが何であるかを調べる
- 4. C#では、C++のCHAR_BITに似ていますか?ファストアブス
- 5. キャストされたキャスティングリストリスト<ChildClass>
- 6. オーバーロードされたメソッドのJava動的キャスト
- 7. Java Webアプリケーションの世界でRJS(Ruby on Railsで使用されているもの)に似ていますか?
- 8. Cでキャストされたパラメータ文とは何ですか?
- 9. JavaのMid関数 - VBに似ていますか? Visual Basicで
- 10. javaのスペルチェッカーに似たAPIを探しています
- 11. 指定されたキャストは、C#
- 12. C++のjavaのstring.split( "")と似た関数
- 13. LPCWSTRにキャストしますか?</p> <p>I:私は手動でLPCWSTRへのすべての文字列またはchar *型キャストしたい
- 14. C++にJavaの弱参照に類似したものがありますか?
- 15. 私がプレイしてJavaで似た何かをしたいプレイ
- 16. Dozer(Java)はPHP用のポートに似ていますか?
- 17. Cの構造体ポインタにNULLをキャストしていますか?
- 18. C++/CLI:管理されていない列挙型から管理された列挙型へのキャスト
- 19. マッピングでキャストされたLinq2SQL?
- 20. Javaで閉じるかそれに似たもの
- 21. C++のBoostライブラリに似たCライブラリリソースがありますか?
- 22. スーパークラスのリストにキャストするときのチェックされていないキャスト
- 23. Javaデスクトップ開発フレームワークはAndroidに似ていますか?
- 24. Javaジェネリック:警告には、<InterfaceName>に準拠するためのチェックされていないキャストが必要です
- 25. このサイトで使用されているのと似たタギングシステム
- 26. 整数三角法のC++ライブラリです。速度はオプションの近似で最適化されていますか?
- 27. SSISがキャストされていないDT_WSTRにキャストされている、そう思われる
- 28. apache httpcomponentsに似たC/C++ライブラリがありますか?
- 29. Levenshteinに似ていますが、Qwertyキーボードに重み付けされた良いアルゴリズムですか?
- 30. XNAに似たJava Game Engine
リンクが壊れました。 – Hubbitus
ありがとう@Hubbitus。私はシリアライゼーションについても説明する別のリンクに変更しました。 – vitaut