To get field values from an object in Java we are going to use Fields component. To start we need to add the following dependency to our pom.xml:
Fields component uses to cache all fields for faster access and in this code snippet we show how to handle the fields of any Java object even of anonymous type:
import static org.burningwave.core.assembler.StaticComponentContainer.Fields; import java.lang.reflect.Field; import java.util.Collection; import java.util.List; import java.util.Map; import org.burningwave.core.classes.FieldCriteria; @SuppressWarnings("unused") public class FieldsHandler { public static void execute() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); //Fast access by memory address Collection<Class<?>> loadedClasses = Fields.getDirect(classLoader, "classes"); //Access by Reflection loadedClasses = Fields.get(classLoader, "classes"); //Get all field values of an object through memory address access Map<Field, ?> values = Fields.getAllDirect(classLoader); //Get all field values of an object through reflection access values = Fields.getAll(classLoader); Object obj = new Object() { volatile List<Object> objectValue; volatile int intValue; volatile long longValue; volatile float floatValue; volatile double doubleValue; volatile boolean booleanValue; volatile byte byteValue; volatile char charValue; }; //Get all filtered field values of an object through memory address access Fields.getAllDirect( FieldCriteria.forEntireClassHierarchy().allThoseThatMatch(field -> { return field.getType().isPrimitive(); }), obj ).values(); } public static void main(String[] args) { execute(); } }
In this short article we have learned how to get fields of Java objects and how to handle them and the complete source is available at this link.
Top comments (0)