2

タイプ char * の構造体のメンバーを Java 生成クラスの java.lang.Object に変換しようとしています。Integer 型と String 型のオブジェクトを渡したいので、これを行いたいと思います。それは可能ですか?

たとえば、次の構造があります。

typedef struct Foo
{
    int type;
    char * data;
} Foo;

typeメンバーは、メンバーのデータ型 (整数または文字列) を決定するためのものですdata

生成された Foo 構造の Java クラスで、dataString 型と Integer 型の引数を渡すことができる set メソッド (メンバー用) が必要です。String および Integer オブジェクトを、たとえば byte[] などの便利なデータ型に変換してから、set メソッドに渡すことができます。getメソッドではなく、setメソッドのみが必要です。次に、C コードでは、渡された整数値または文字列値をtypeメンバーに応じて使用する必要があります。

4

1 に答える 1

0

求められていることを直接行う方法はありません。これは、Java では java.lang.Object を int、Integer、または String にキャストできないためです。

つまり、Java にバイト配列を渡す必要がある可能性が高く、Java の世界では、型フィールドに応じて、そのバイト配列から int または String を生成する「デシリアライゼーション」関数を実装する必要があります。

JNIを介してバイト配列を渡すことの実際の意味はわかりません。しかし、それは別の質問に任せるべきだと思います。

于 2013-03-25T19:05:35.790 に答える