Sie können auch eine switch-Anweisung in Ihrem JNI-Code verwenden, wenn Sie:
- ein Integralwert-Feld in Ihrer Java Enum-Klasse sorgen.
- Definieren Sie eine parallele Menge von Integralkonstanten in C oder C++ (z. B. durch eine andere Enumeration).
Die redundante Definition führt zu einem Divergenzrisiko. Sie können dies mildern durch:
- Schwer dokumentiert die Parallelität auf beiden Seiten. Dies funktioniert am besten, wenn die Aufzählung klein ist und sich selten ändert.
- Generieren des Codes aus einer einzigen Quelle.
Zum Beispiel in Java, könnten Sie haben:
public enum Foo {
FIRST(0),
SECOND(1);
public int getValue() { return m_value; }
private int m_value;
private Foo(int value) { m_value = value; }
}
Und in C++, könnten Sie haben:
enum Foo {
FIRST = 0,
SECOND = 1
};
Für eine parallele Zählung mache ich persönlich immer die ENUM-Werte explizit auf der C/C++ Seite. Andernfalls kann ein Löschen eines Enumerators auf beiden Seiten dazu führen, dass die Werte abweichen.
Ich habe Ihren Vorschlag in Jace implementiert: https://sourceforge.net/projects/jace/ – Gili
Ich bin froh, dass ich helfen konnte. –
Sie brauchen es nicht. Javah macht genau das schon. – EJP