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

有什么办法可以将数值与object?我想object包含/指向一个整数。

4

1 回答 1

4

确保您阅读了 JNI 指南的Pitfalls部分中的Confusing jclass with jobject的理解。

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

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

JNI 指南有一个示例,说明如何在类的调用构造函数String中执行此操作。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

(需要错误检查。)

于 2012-05-18T10:14:54.250 回答