将jobject与值相关联

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

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

请确保您在JNI指南的陷阱部分中阅读了解与jclass混淆的问题 。

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

你可以用jclass (或Class )做的是找到你想要的构造函数,并调用该构造函数来创建一个Foo类型的对象。

JNI指南有一个示例,说明如何在类String的Invoking构造函数中执行此操作。 除了方法签名之外,为类Integer执行它是类似的。

你会做类似的事情:

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

(需要错误检查。)