Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I iterate over class members?

I am using the Java version of the Google App Engine.

I would like to create a function that can receive as parameters many types of objects. I would like to print out the member variables of the object. Each object(s) may be different and the function must work for all objects. Do I have to use reflection? If so, what kind of code do I need to write?

public class dataOrganization {   private String name;   private String contact;   private PostalAddress address;    public dataOrganization(){} }  public int getObject(Object obj){   // This function prints out the name of every    // member of the object, the type and the value   // In this example, it would print out "name - String - null",    // "contact - String - null" and "address - PostalAddress - null" } 

How would I write the function getObject?

like image 709
Anon21 Avatar asked Mar 17 '10 21:03

Anon21


People also ask

How do you iterate through a Set of elements?

Example 2: Iterate through Set using iterator() We have used the iterator() method to iterate over the set. Here, hasNext() - returns true if there is next element in the set. next() - returns the next element of the set.

What is the best way to iterate a list?

The best way to iterate the list in terms of performance would be to use iterators ( your second approach using foreach ).


1 Answers

Yes, you do need reflection. It would go something like this:

public static void getObject(Object obj) {     for (Field field : obj.getClass().getDeclaredFields()) {         //field.setAccessible(true); // if you want to modify private fields         System.out.println(field.getName()                  + " - " + field.getType()                  + " - " + field.get(obj));     } } 

(As pointed out by ceving, the method should now be declared as void since it does not return anything, and as static since it does not use any instance variables or methods.)

See the reflection tutorial for more.

like image 146
Michael Myers Avatar answered Sep 29 '22 13:09

Michael Myers