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)