jclass object = (*env)->FindClass(env,"java/lang/Integer") // C Code
有什么方法可以将整数值与object
相关联?我希望object
包含/指向整数。
答案 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
(需要进行错误检查。)