Java enum ordinal in JNI

Java enum ordinal in JNI

本文关键字:JNI in ordinal enum Java      更新时间:2023-10-16

我有一个java枚举:

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++ 和 java 中枚举字段的索引 .ordinal()。

我知道我可以传递枚举并通过字符串访问字段。
像这样:

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


但是,拥有类似我提出的代码会方便得多。这可能吗?我也可以将java枚举复制到c ++中,但是我必须维护两个文件。

如果你在enum类本身上运行javah,它将生成一个.h文件,其中包含所有序号值的#define语句。