开发者

How do I iterate over class members?

开发者 https://www.devze.com 2022-12-23 12:54 出处:网络
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 obj

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 dataOrganizat开发者_JAVA技巧ion {
  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?


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消