comment retourner enum de JNI
En java j'ai:
public class MyClass{
public enum STATUS {
ZERO,
ONE ,
TWO
}
public native STATUS nativeGetStatus();
...
private STATUS state = nativeGetStatus(); //returns enum
private STATUS state2 = nativeGetStatus(); //returns enum
}
Je veux méthode native 'nativeGetStatus', pour retourner cette valeur d'enum.
JNI retour entier et en les comparant avec la valeur d'enum en java est une option, mais je me demandais est-il possible de retourner la valeur par jobject et affecter directement à l'état ? si oui, comment?
OriginalL'auteur krt | 2012-06-27
Vous devez vous connecter pour publier un commentaire.
Bien sûr, vous pouvez le faire. Les valeurs de l'Enum sont public aux champs statiques de la classe Enum, de sorte que vous pouvez utiliser cette manuel officiel pour écrire le code. Juste obtenir le champ de JNI et le retourner comme jobject.
Non, je veux dire que l'ON est un champ statique de la situation de classe. Vous pouvez y avoir accès et retour à partir de JNI.
C'est pourquoi vous devriez ne jamais fournir un lien comme une réponse.
+l pour awesome gobelet lien
OriginalL'auteur Vladimir Ivanov
J'ai du mal à l'accepté de répondre puisque je ne pouvais pas comprendre la signature du champ statique pendant un certain temps. Voici donc la JNI de mise en œuvre qui devrait fonctionner avec l'exemple ci-dessus (pas testé):
Merci! Cette réponse m'a aidé. Note pour qui n'est pas trop familier avec Java&JNI comme moi: vous devez spécifier paquet de classes à l'intérieur de son nom à la fois dans FindClass et GetStaticFieldID, par exemple "com/example/Maclasse$STATUS".
OriginalL'auteur chruesel