Mega Code Archive

 
Categories / Java / Reflection
 

Demonstrates dynamic usage of methods

/*  *     file: MethodUsageDemo.java  *  package: oreilly.hcj.reflection  *  * This software is granted under the terms of the Common Public License,  * CPL, which may be found at the following URL:  * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm  *  * Copyright(c) 2003-2005 by the authors indicated in the @author tags.  * All Rights are Reserved by the various authors.  *  ########## DO NOT EDIT ABOVE THIS LINE ########## */ //package oreilly.hcj.reflection; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.DateFormat; import java.util.Locale; /**  * Demonstrates dynamic usage of methods.  *   * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>  * @version $Revision: 1.3 $  */ public class MethodUsageDemo {   /** Date formatter to be used. */   static final DateFormat DATE_FORMATTER = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);   /**    * Ouput the values of the "get" methods.    *     * @param obj    *          The object to output.    *     * @throws InvocationTargetException    *           If an error occurs in calling the get methods.    * @throws IllegalAccessException    *           If the security manager rejects access.    */   public static final void outputValues(final Object obj) throws InvocationTargetException,       IllegalAccessException {     final String PREFIX = "get"; //$NON-NLS-1$     System.out.println("--- Accessing Get Methods ---");     Method[] meths = obj.getClass().getMethods();     for (int idx = 0; idx < meths.length; idx++) {       if (meths[idx].getName().startsWith(PREFIX)) {         if (meths[idx].getParameterTypes().length == 0) {           System.out.print(meths[idx].getName() + " = "); //$NON-NLS-1$           System.out.println(meths[idx].invoke(obj, null));         }       }     }   }   /**    * Main method.    *     * @param args    *          Command line arguments.    *     * @throws RuntimeException    *           If an unforseen error occurs.    */   public static void main(final String[] args) {     try {       // person.setBirthDate(DATE_FORMATTER.parse("01/12/1971"));       // Output the object.       outputValues(new String());     } catch (final Exception ex) {       throw new RuntimeException(ex);     }   } } /* ########## End of File ########## */