将jobject与值相关联

时间:2012-05-18 08:24:42

标签: java c java-native-interface

jclass object = (*env)->FindClass(env,"java/lang/Integer") // C Code

有什么方法可以将整数值与object相关联?我希望object包含/指向整数。

1 个答案:

答案 0 :(得分:4)

请务必阅读JNI指南的陷阱部分中的理解Confusing jclass with jobject

FindClass(env, "Foo")返回java.lang.Class类型的对象(句柄)。它在概念上等同于Class.forName(String)静态方法:它不返回您将其作为参数(Foo)提供的类的实例。它返回一个类型为Class的对象,表示该类。

使用jclass(或Class)可以找到所需的构造函数,并调用该构造函数来创建Foo类型的对象。

JNI指南中有一个示例,说明如何在课程String的{​​{3}}中执行此操作。除了方法签名之外,对类Integer执行此操作是类似的。

你会做类似的事情:

jclass clazz = (*env)->FindClass(env, "java/lang/Integer");
jmethodID mid = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
jobject mint = (*env)->NewObject(env, clazz, mid, 42); // your desired value here

(需要进行错误检查。)