gpt4 book ai didi

java - 如何将 Java 对象类型(如 Long 和 Integer)转换为原始类型(如 long 和 int)

转载 作者:太空狗 更新时间:2023-10-29 13:04:24 26 4
gpt4 key购买 nike

我的 Java 方法签名如下:

public native Long passLong(MyEntity myEntity);  

然后映射:

extern "C"
JNIEXPORT jobject JNICALL
Java_passLong(JNIEnv *env, jobject instance, jobject myEntity) {

jclass myEntityClazz = env->GetObjectClass(myEntity);
jmethodID get_myEntityGUID = env->GetMethodID(myEntityClazz, "get_myEntityGUID", "()Ljava/lang/Long;");
jobject myEntityGUID = env->CallObjectMethod(myEntity, get_myEntityGUID);

// Convert the Long object to a primitive here

return myEntityGUID;

}

如何将 Java 长对象转换为 C 原语?

提前谢谢大家。

我的实体

public class MyEntity {

private Long _myEntityGUID;

public Long get_myEntityGUID() {
return _myEntityGUID;
}

public void set_myEntityGUID(Long _myEntityGUID) {
this._myEntityGUID = _myEntityGUID;
}
}

最佳答案

How can I go about converting a Java Long Object to a C primitive?

调用它的longValue() 方法。请注意,您需要先测试对象是否为 null,否则准备好处理 NullPointerException(就像在 Java 端使用 auto(un)boxing 时一样) .

另外请注意,在可能的情况下,在 Java 端处理此类事情要比在 JNI 中容易得多。在您提供的示例中,这似乎是不可能的,但也许您可以重构,使 native 方法做得更少,因此不需要整个 MyEntity 作为参数。

关于java - 如何将 Java 对象类型(如 Long 和 Integer)转换为原始类型(如 long 和 int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com