将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
(需要错误检查。)