I wonder is there a way to get all private fields of some class in java and their type.
For example lets suppose I have a class
class SomeClass { private String aaa; private SomeOtherClass bbb; private double ccc; }
Now I would like to get all private fields (aaa
, bbb
, ccc
) of class SomeClass
(Without knowing name of all fields upfront) and check their type.
If we want to access Private Field and method using Reflection we just need to call setAccessible(true) on the field or method object which you want to access. Class. getDeclaredField(String fieldName) or Class. getDeclaredFields() can be used to get private fields.
Yes it is possible.
Accessing private fields in Java using reflection In order to access a private field using reflection, you need to know the name of the field than by calling getDeclaredFields(String name) you will get a java. lang. reflect. Field instance representing that field.
The list of all declared fields can be obtained using the java. lang. Class. getDeclaredFields() method as it returns an array of field objects.
It is possible to obtain all fields with the method getDeclaredFields()
of Class
. Then you have to check the modifier of each fields to find the private ones:
List<Field> privateFields = new ArrayList<>(); Field[] allFields = SomeClass.class.getDeclaredFields(); for (Field field : allFields) { if (Modifier.isPrivate(field.getModifiers())) { privateFields.add(field); } }
Note that getDeclaredFields()
will not return inherited fields.
Eventually, you get the type of the fields with the method Field.getType().
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With