使用SWIG将Java类型结构的成员转换为Java中的java.lang.Object

时间:2012-10-30 13:17:25

标签: java swig

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

例如,我有以下结构:

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

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

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

1 个答案:

答案 0 :(得分:0)

没有办法直接做你所要求的。那是因为在Java中你不能将java.lang.Object强制转换为int或Integer或String。

那就是说,你可能需要做的是将字节数组传递给Java,并在Java世界中实现一些“反序列化”函数,这取决于类型字段 - 从该字节数组生成一个int或一个String

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