jclass jobject

jclass:类引用

jobject:实例引用(C++的说法:对象引用)

 

C访问java的变量,需要获取变量ID,然后访问变量。

其中获取变量ID,GetFieldID,需要参数jclass,这是一个类操作,因为它从这个类中获得field的描述。

与此相反,访问变量变量,GetIntField,需要参数jobject,这是一个实例操作,因为它从这个实例中获得这个field的值。

转载于:https://www.cnblogs.com/luzhiyuan/p/4351953.html

Java Native Interface (JNI) 中,可以使用 `jobject` 类型的变量作为回调方法的参数,其中 `jobject` 代表了Java对象的指针类型。如果需要将 `void*` 指针类型的变量传递给Java回调方法的 `jobject` 参数,可以使用以下步骤: 1. 将 `void*` 指针类型的变量转换为 `jobject` 类型的变量。 2. 调用Java回调方法,并将 `jobject` 类型的变量作为参数传递给它。 以下是一个示例代码,演示如何将 `void*` 指针类型的变量传递给Java回调方法的 `jobject` 参数: ```c++ // Java回调方法的原型 void callbackMethod(JNIEnv* env, jobject obj, jobject callbackObj); // 将 void* 转换为 jobject void* voidPtr = ...; jobject jobj = reinterpret_cast<jobject>(voidPtr); // 获取Java对象和回调方法信息 JNIEnv* env = ...; jclass clazz = env->GetObjectClass(obj); jmethodID callbackMethodID = env->GetMethodID(clazz, "callback", "(Ljava/lang/Object;)V"); // 调用Java回调方法 env->CallVoidMethod(callbackObj, callbackMethodID, jobj); // 释放资源 env->DeleteLocalRef(clazz); ``` 在这个示例中,我们假设有一个Java对象 `obj`,其中包含一个名为 `callback` 的回调方法,该方法的原型为 `void callback(Object callbackObj)`。我们还假设有一个 `void*` 指针类型的变量 `voidPtr`,需要将它传递给Java回调方法的 `callbackObj` 参数。 首先,我们将 `void*` 指针类型的变量转换为 `jobject` 类型的变量 `jobj`。接着,我们获取Java对象 `obj` 的类信息和 `callback` 方法的方法ID,然后调用 `callback` 方法,将 `jobj` 作为参数传递给它。最后,释放资源,包括删除本地引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值