使用 JNI / JVMTI - 如何确定 jfieldID 是否是静态的
如果我使用 jvmti_env->GetClassFields(objClass, &numOfFields, &fieldIds);
我仍然需要决定是调用 GetStatic
我在这里找到了解决方法: http://zoo.cs.yale.edu/classes/cs433/programming/examples-java-socket/jdk1.5/hotspot/src/share/vm/runtime/jfieldIDWorkaround.hpp
但我更喜欢 JVM 的解决方案。
谢谢!
If I use jvmti_env->GetClassFields(objClass, &numOfFields, &fieldIds);
I still have to decide whether to call GetStatic<Type>Field or Get<Type>Field.
How do I determine which one to use? I know that in java.lang.reflect.Field I can query fields' modifiers for static.
I've found a workaround here:
http://zoo.cs.yale.edu/classes/cs433/programming/examples-java-socket/jdk1.5/hotspot/src/share/vm/runtime/jfieldIDWorkaround.hpp
But I prefer a solution from the JVM.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用功能
JVMTI 中的 GetFieldModifiers。
该函数返回的值描述如下:
http://java.sun.com/docs /books/jvms/second_edition/html/ClassFile.doc.html#1480
所以对于静态你应该这样检查:
Use function
GetFieldModifiers in JVMTI.
Values returned by this function are described here:
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#1480
So for static you should check like this: