Get all Fields
If you have a class object, you can get all the public
fields of that class using getFields
. This gives you
an array of field objects.
import java.lang.reflect.Field;
class Main {
void main() {
Class<Drink> drinkClass = Drink.class;
Field[] fields = drinkClass.getFields();
for (var field : fields) {
System.out.println(field.getName());
}
}
}
class Drink {
public String name;
public boolean caffeinated;
}
Its worth knowing that getFields
will not list non-public fields. To
get a list of all fields, including private and package-private ones,
you need to use getDeclaredFields
.
import java.lang.reflect.Field;
class Main {
void main() {
Class<Soup> soupClass = Soup.class;
System.out.println("Using getFields");
Field[] publicFields = soupClass.getFields();
for (var field : publicFields) {
System.out.println(field.getName());
}
System.out.println("-------------");
System.out.println("Using getDeclaredFields");
Field[] allFields = soupClass.getDeclaredFields();
for (var field : allFields) {
System.out.println(field.getName());
}
}
}
class Soup {
public String name;
boolean isChicken;
private boolean hasVeggies;
}