Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loop over all fields in a Java class

Tags:

java

class

field

I have a Java class that has a number of Fields.

I would like to Loop over al lthe fields and do something for the one's that are null.

For example if my class is:

public class ClassWithStuff {     public int inty;     public stringy;              public Stuff;     //many more fields } 

In another location, I'd make a ClassWithStuff object and I would like to go though all the fields in the class. Kind of like this:

for (int i = 0; i < ClassWithStuff.getFields().size(); i++) {       //do stuff with each one } 

Is there any way for me to achieve this?

like image 989
CodyBugstein Avatar asked Jun 13 '13 19:06

CodyBugstein


People also ask

What is reflection java?

Reflection is a feature in the Java programming language. It allows an executing Java program to examine or "introspect" upon itself, and manipulate internal properties of the program. For example, it's possible for a Java class to obtain the names of all its members and display them.


1 Answers

Use getDeclaredFields on [Class]

ClasWithStuff myStuff = new ClassWithStuff(); Field[] fields = myStuff.getClass().getDeclaredFields(); for(Field f : fields){    Class t = f.getType();    Object v = f.get(myStuff);    if(t == boolean.class && Boolean.FALSE.equals(v))       // found default value    else if(t.isPrimitive() && ((Number) v).doubleValue() == 0)      // found default value    else if(!t.isPrimitive() && v == null)      // found default value } 

(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html)

like image 99
Zim-Zam O'Pootertoot Avatar answered Sep 21 '22 15:09

Zim-Zam O'Pootertoot