reflection
Get Fields from an Object
In this example we shall show you how to get the fields of a class represented by an object. To get the fields of a class represented by an object one should perform the following steps:
- Get an array containing Field objects reflecting all the accessible public fields of the class or interface represented by this Class object, with
getFields()
API method of Class. - Then get an array of Field objects reflecting all the fields declared by the class or interface represented by this Class object, with
getDeclaredFields()
API method of Class. This includes public, protected, default (package) access, and private fields, but excludes inherited fields,
as described in the code snippet below.
package com.javacodegeeks.snippets.core; import java.lang.reflect.Field; public class GetFieldsFromAnObject { public static void main(String[] args) { Class<?> clazz = java.lang.String.class; Field[] fields; // list with all the accessible public fields of the class or interface fields = clazz.getFields(); for (int i = 0; i < fields.length; i++) { System.out.println("Found public field: " + fields[i]); } System.out.println(); // list with all the fields declared by this class or interface fields = clazz.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { System.out.println("Found field: " + fields[i]); } } }
Output:
Found public field: public static final java.util.Comparator java.lang.String.CASE_INSENSITIVE_ORDER
Found field: private final char[] java.lang.String.value
Found field: private final int java.lang.String.offset
Found field: private final int java.lang.String.count
Found field: private int java.lang.String.hash
Found field: private static final long java.lang.String.serialVersionUID
Found field: private static final java.io.ObjectStreamField[] java.lang.String.serialPersistentFields
Found field: public static final java.util.Comparator java.lang.String.CASE_INSENSITIVE_ORDER
This was an example of how to get the fields of a class represented by an object in Java.