1 5 package com.tc.object.walker; 6 7 import java.lang.reflect.Field ; 8 import java.lang.reflect.Modifier ; 9 import java.util.Collections ; 10 import java.util.HashMap ; 11 import java.util.Iterator ; 12 import java.util.Map ; 13 import java.util.Set ; 14 import java.util.TreeSet ; 15 16 class AllFields { 17 private static final Class OBJECT = Object .class; 18 19 private final Set fields = new TreeSet (); 20 21 Iterator getFields() { 22 return Collections.unmodifiableSet(fields).iterator(); 23 } 24 25 static AllFields getAllFields(Object o) { 26 28 AllFields allFields = new AllFields(); 29 30 Map fieldNames = new HashMap (); 31 32 Class c = o.getClass(); 33 while (c != OBJECT) { 34 Field [] fields = c.getDeclaredFields(); 35 for (int i = 0; i < fields.length; i++) { 36 Field f = fields[i]; 37 38 if (Modifier.isStatic(f.getModifiers())) { 39 continue; 40 } 41 42 FieldData key = new FieldData(f); 43 44 FieldData prev = (FieldData) fieldNames.put(f.getName(), key); 45 if (prev != null) { 46 key.setShadowed(true); 47 prev.setShadowed(true); 48 } 49 50 allFields.fields.add(key); 51 } 52 53 c = c.getSuperclass(); 54 } 55 56 return allFields; 57 58 } 59 60 } | Popular Tags |