2012-01-05 8 views
1

jvmti_env->GetClassFields(objClass, &numOfFields, &fieldIds);を使用する場合、GetStaticを呼び出すかどうかを決定する必要があります。<タイプ>フィールドまたはGet <タイプ>フィールド。 どのようなものを使用すればよいですか?私はjava.lang.reflect.Fieldで静的フィールドの修飾子を照会できることを知っています。JNI/JVMTIの使用 - jfieldIDが静的かどうかを判断する方法

私は回避策ここに見つけた: http://zoo.cs.yale.edu/classes/cs433/programming/examples-java-socket/jdk1.5/hotspot/src/share/vm/runtime/jfieldIDWorkaround.hpp
しかし、私はJVMのソリューションを好みます。
ありがとうございます!

答えて

1

JVMTIに関数 を使用してください。この関数によって返さ

値は、ここで説明されています http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#1480

をだからあなたはこのように確認する必要があり、静的のために:

jint accessFlags 
... 
(*jvmti)->GetFieldModifiers(jvmti, objClass, fieldIds[i], &accessFlags); 
if (accessFlags & 0x0008) 
    printf("STATIC\n"); 
else 
    printf("NOT STATIC\n"); 
+0

感謝。どのように私はこの機能を逃したのか分からない... –

関連する問題