开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜