JNI中的Java枚举序号

时间:2015-04-30 06:09:24

标签: java c++ enums java-native-interface

我有一个java-enum:

puclic enum TestSet{
  TEST_COLOR,
  TEST_SKEW,
  TEST_ANGLE;
}

现在我想要的是在我的c ++代码中编写代码的可能性:

Test::Test(){
 bool foo [5];

 ....
 ....
 foo[TestSet.TEST_COLOR] = true;
 foo[TestSet.TEST_SKEW]  = false;

 ....
 .....

}

我要求序数,因为我想要c ++中的枚举字段索引和.ordinal()中的java索引。

我知道我可以通过枚举并按字符串访问字段。这样的事情:

jclass clSTATUS    = env->FindClass("TestSet");
jfieldID fidTEST_COLOR    = env->GetStaticFieldID(clSTATUS , "TEST_COLOR", TestSet;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);


但是像我提出的代码一样,会更方便。这有可能吗?我也可以将java enum复制到c ++中,但是我必须维护两个文件。

1 个答案:

答案 0 :(得分:0)

如果您在javah类本身上运行enum,它将为所有序数值生成一个带有#define语句的.h文件。