2

我正在尝试将 char * 类型结构的成员转换为 Java 生成类中的 java.lang.Object 。我想这样做是因为我想将整数和字符串类型的对象传递给它。有可能这样做吗?

例如我有以下结构:

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

type成员用于确定成员的数据类型-data整数或字符串。

在生成的 Foo 结构的 Java 类中,我想要一个 set 方法(用于data成员),我可以在其上传递 String 和 Integer 类型的参数。在将 String 和 Integer 对象传递给 set 方法之前,我可以将它们转换为一些方便的数据类型,例如 byte[]。我只想设置方法而不是获取方法。然后在 C 代码中,我必须根据type成员使用传递的 Integer 或 String 值。

4

1 回答 1

0

没有办法直接做你被要求做的事情。这是因为在 Java 中,您不能将 java.lang.Object 强制转换为 int、Integer 或 String。

也就是说,您可能需要做的是将字节数组传递给 Java,并在 Java 世界中实现一些“反序列化”函数,该函数 - 根据类型字段 - 从该字节数组生成 int 或 String 。

我不知道通过 JNI 传递字节数组的实际含义。但我认为这应该留给另一个问题。

于 2013-03-25T19:05:35.790 回答