Access static enum fields using JNI invocation API
How can we access static enum fields using JNI invocation API
I am trying to access glassfish org.glassfish.api.embedded.ContainerBuilder.Type enumeration from Glassfish api using following code
jclass Type= env->FindClass(
"or开发者_开发技巧g/glassfish/api/embedded/ContainerBuilder$Type");
jfieldID Type_web=env->GetStaticFieldID(
Type,"web","org/glassfish/api/embedded/ContainerBuilder$Type");
But it always gives me error as Exception in thread "main" java.lang.NoSuchFieldError: web
, How can I access that field ?
Actually I was missing L
at front and ;
at end of classname, I done following changes
jfieldID Type_web=env->GetStaticFieldID(
Type,"web","Lorg/glassfish/api/embedded/ContainerBuilder$Type;");
There is a method in java.lang.Class getEnumConstants.
According to doc:
Returns the elements of this enum class or null if this Class object does not represent an enum type.
I've not used reflection to look at enum classes myself, but it's possible that they're being stored in a strange way. In your situation I'd call into Class.getFields()
and have a look at the list of the class's fields.
精彩评论