Вы также можете использовать оператор switch в своем коде JNI, если вы:
- Предоставьте поле интегрального значения в вашем классе перечисления Java.
- Определить параллельный набор интегральных констант в C или C ++ (например, другим перечислением).
Избыточное определение создает риск расхождения. Вы можете смягчить это следующим образом:
- Тяжело документируя параллелизм с обеих сторон. Это работает лучше всего, если перечисление мало и изменяется нечасто.
- Генерация кода из одного источника.
Например, в Java вы могли бы иметь:
public enum Foo {
FIRST(0),
SECOND(1);
public int getValue() { return m_value; }
private int m_value;
private Foo( int value ) { m_value = value; }
}
А в C ++ вы могли бы иметь:
enum Foo {
FIRST = 0,
SECOND = 1
};
Для параллельного перечисления я лично всегда делаю значения перечисления явными на стороне C / C ++. В противном случае удаление перечислителя с обеих сторон может привести к расхождению значений.