krt*_*krt 15 java java-native-interface enums
在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
}
Run Code Online (Sandbox Code Playgroud)
我希望本机方法'nativeGetStatus'返回此枚举值.
JNI返回整数并与java中的枚举值进行比较是一个选项,但是想知道是否可以通过jobject返回值并将其直接分配给状态?如果有,怎么样?
小智 43
我一直在努力接受已接受的答案,因为我暂时无法弄清静态字段的签名.所以这里的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;
Run Code Online (Sandbox Code Playgroud)