znt*_*trx 2 java java-native-interface
我遇到了与我想做的事情相关的各种答案,但没有完全相同的答案,感谢任何帮助......
我有一个包范围 java 枚举,我想将其作为 argumentmnt 传递给 java 方法,但找不到直接从 JNI 创建它的方法。这可能吗?
这是代码的框架:
MyEnum.java
package com.a.b;
public enum MyEnum {
VALUE1,
VALUE2,
VALUE3
}
Run Code Online (Sandbox Code Playgroud)
MyClass.java
package com.a.b.c;
import com.a.b.MyEnum;
public class MyClass {
public MyClass(MyEnum value) { ... }
}
Run Code Online (Sandbox Code Playgroud)
是否可以直接从 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |