gpt4 book ai didi

java - 从 JNI 创建 Java 枚举

转载 作者:行者123 更新时间:2023-11-30 02:04:34 24 4
gpt4 key购买 nike

我遇到了与我想做的事情相关的各种答案,但没有完全相同的答案,感谢任何帮助......

我有一个包范围的 java 枚举,我想将其作为 argumentmnt 传递给 java 方法,但找不到直接从 JNI 创建它的方法。这可能吗?

这是代码的框架:

MyEnum.java

package com.a.b;
public enum MyEnum {
VALUE1,
VALUE2,
VALUE3
}

MyClass.java

package com.a.b.c;
import com.a.b.MyEnum;
public class MyClass {
public MyClass(MyEnum value) { ... }
}

是否可以直接从 JNI 调用 MyClass 构造函数? (如果我删除枚举,即传递一个字符串并让 java 代码进行转换,那么我调用构造函数没有问题,但无法弄清楚如何执行其他操作)。

最佳答案

这相当简单。每个枚举值都是 MyEnum 类型的静态字段:

jclass myenum_clazz = env->FindClass("com/a/b/MyEnum");
jfieldID value2_fid = env->GetStaticFieldID(myenum_clazz, "VALUE2", "Lcom/a/b/MyEnum;");
jobject value2 = env->GetStaticObjectField(myenum_clazz, value2_fid);
...
jobject myclass = env->NewObject(myclass_clazz, myclass_init, value2);

关于java - 从 JNI 创建 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729992/

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