在java中我有:
public class MyClass{
public enum STATUS {
ZERO,
ONE ,
TWO
}
public native STATUS nativeGetStatus();
...
private STATUS state = nativeGetStatus(); //returns enum
private STATUS state2 = nativeGetStatus(); //returns enum
}
我希望 native 方法“nativeGetStatus”返回此枚举值。
JNI 返回整数并与 java 中的枚举值进行比较是一种选择,但想知道是否可以通过 jobject 返回值并将其直接分配给状态?如果是的话怎么办?
最佳答案
由于我有一段时间无法弄清楚静态字段的签名,因此我很难接受接受的答案。因此,这是应该与上面的示例一起使用的 JNI 实现(未经测试):
jclass clSTATUS = env->FindClass("MyClass$STATUS");
jfieldID fidONE = env->GetStaticFieldID(clSTATUS , "ONE", "LMyClass$STATUS;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);
return STATUS_ONE;
关于java - 如何从 JNI 返回枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30414677/