Java: get all variable names in a class

ufk picture ufk · Jan 24, 2010 · Viewed 133.6k times · Source

I have a class and I want to find all of its public fields (not methods). How can I do this?

Thanks!

Answer

Bozho picture Bozho · Jan 24, 2010
Field[] fields = YourClassName.class.getFields();

returns an array of all public variables of the class.

getFields() return the fields in the whole class-heirarcy. If you want to have the fields defined only in the class in question, and not its superclasses, use getDeclaredFields(), and filter the public ones with the following Modifier approach:

Modifier.isPublic(field.getModifiers());

The YourClassName.class literal actually represents an object of type java.lang.Class. Check its docs for more interesting reflection methods.

The Field class above is java.lang.reflect.Field. You may take a look at the whole java.lang.reflect package.