import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List;
A generic method which can print any bean class, provided all the getter methods are there.
public static void printObject(Object app) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { Method[] m = app.getClass().getMethods(); for(Method method : m) { if(method.getName().startsWith("get")) { // if getClass then ignore this method. if(method.getName().equals("getClass")) continue; if(method.getReturnType().isArray()) { System.out.print(method.getName() + "=[ "); Object[] values = (Object[])method.invoke(app, null); for(Object v : values) { System.out.print(v + ", " ); } System.out.print(" ]\n"); } else System.out.println(method.getName() + " = " + method.invoke(app, null)); } } }
If you would like to learn more about Reflections, you can visit this link: http://java.sun.com/developer/technicalArticles/ALT/Reflection/
Please note that you need to change line number 16 if you are using JDK 1.6
ReplyDeletethere you need to pass only 1 argument i.e. app
The declaration of invoke method has been changed in 1.6