コード例 #1
0
ファイル: ObjectNavigator.java プロジェクト: Aligato/Vampire
 private void navigateClassFields(Object obj, Class<?> clazz, Visitor visitor) {
   Field[] fields = clazz.getDeclaredFields();
   AccessibleObject.setAccessible(fields, true);
   for (Field f : fields) {
     FieldAttributes fieldAttributes = new FieldAttributes(clazz, f);
     if (exclusionStrategy.shouldSkipField(fieldAttributes)
         || exclusionStrategy.shouldSkipClass(fieldAttributes.getDeclaredClass())) {
       continue; // skip
     }
     TypeInfo fieldTypeInfo = TypeInfoFactory.getTypeInfoForField(f, objTypePair.type);
     Type declaredTypeOfField = fieldTypeInfo.getActualType();
     boolean visitedWithCustomHandler =
         visitor.visitFieldUsingCustomHandler(fieldAttributes, declaredTypeOfField, obj);
     if (!visitedWithCustomHandler) {
       if (fieldTypeInfo.isArray()) {
         visitor.visitArrayField(fieldAttributes, declaredTypeOfField, obj);
       } else {
         visitor.visitObjectField(fieldAttributes, declaredTypeOfField, obj);
       }
     }
   }
 }