Se puede utilizar una sentencia switch en el código JNI así, si:
- proporcionar un campo de valor integral en su clase de enumeración de Java.
- Defina un conjunto paralelo de constantes integrales en C o C++ (por ejemplo, en otra enumeración).
La definición redundante presenta un riesgo de divergencia. Puede atenuar esto por:
- Documentando a fondo el paralelismo en ambos lados. Esto funciona mejor si la enumeración es pequeña y cambia con poca frecuencia.
- Generando el código desde una única fuente.
Por ejemplo, en Java, usted podría tener:
public enum Foo {
FIRST(0),
SECOND(1);
public int getValue() { return m_value; }
private int m_value;
private Foo(int value) { m_value = value; }
}
Y en C++, usted podría tener:
enum Foo {
FIRST = 0,
SECOND = 1
};
Para una enumeración paralelo, yo personalmente siempre que los valores de enumeración explícito en el lado C/C++. De lo contrario, una eliminación de un enumerador en ambos lados puede hacer que los valores diverjan.
Implementé su propuesta en Jace: https://sourceforge.net/projects/jace/ – Gili
Me alegro de poder ayudar. –
No lo necesitas. Javah ya hace exactamente eso. – EJP