FileDocCategorySizeDatePackage
MethodInfoDemo.javaAPI DocExample2413Sun Dec 14 22:47:40 GMT 2003oreilly.hcj.reflection

MethodInfoDemo.java

/*
 *     file: MethodInfoDemo.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 oreilly.hcj.bankdata.Gender;
import oreilly.hcj.bankdata.Person;

/**  
 * Demonstrates how to get simple method information.
 *
 * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>
 * @version $Revision: 1.3 $
 */
public class MethodInfoDemo {
	/** 
	 * __UNDOCUMENTED__
	 *
	 * @param obj __UNDOCUMENTED__
	 *
	 * @throws IllegalAccessException __UNDOCUMENTED__
	 * @throws InvocationTargetException __UNDOCUMENTED__
	 */
	public static void emptyStrings(final Object obj)
	    throws IllegalAccessException, InvocationTargetException {
		final String PREFIX = "set";  //$NON-NLS-1$
		Method[] methods = obj.getClass()
			                  .getMethods();
		for (int idx = 0; idx < methods.length; idx++) {
			if (methods[idx].getName()
			                .startsWith(PREFIX)) {
				if (methods[idx].getParameterTypes()[0] == String.class) {
					methods[idx].invoke(obj, new Object[] { new String() });
				}
			}
		}
	}

	/** 
	 * Demo method.
	 *
	 * @param args Command line arguments.
	 */
	public static void main(final String[] args) {
		Person p = new Person();
		p.setFirstName("Robert");
		p.setLastName("Simmons");
		p.setGender(Gender.MALE);
		p.setTaxID("123abc456");

		printMethodInfo(p);

		try {
			System.out.println("==> " + p.getFirstName());
			emptyStrings(p);
			System.out.println("==> " + p.getFirstName());
		} catch (final Exception ex) {
			ex.printStackTrace();
		}
	}

	/** 
	 * __UNDOCUMENTED__
	 *
	 * @param obj __UNDOCUMENTED__
	 */
	public static void printMethodInfo(final Object obj) {
		Class type = obj.getClass();
		final Method[] methods = type.getMethods();
		for (int idx = 0; idx < methods.length; idx++) {
			System.out.println(methods[idx]);
		}
	}
}

/* ########## End of File ########## */