package rtti17; /** * William Smolinski * CISS 241 * Exercise 17-3: * This program will let the user give a class name to find the * get and set Methods. Test with: * java.util.Date * javax.swing.JLabel * java.lang.reflect.Method */ import java.lang.reflect.Method; public class ex173b { public static void main(String[] args) { String classname; Class x; for(int i = 0; i < args.length; i++) { classname = args[i]; try { x = Class.forName(classname); getm(x); System.out.println(); setm(x); System.out.println(); } catch(Exception ex) { ex.printStackTrace(); } } } public static void getm(Class cls) { int i; String methodname; Class rettype; Class[] paramtypes; Method[] ma; System.out.println("Listing get methods for " + cls); /* get all methods for the cls Class, loop through methods and print all methods that are get methods - start with get, is not a void return, and has no arguments */ ma = cls.getMethods(); for(i = 0; i < ma.length; i++) { methodname = ma[i].getName(); rettype = ma[i].getReturnType(); paramtypes = ma[i].getParameterTypes(); if(methodname.startsWith("get") && rettype != Void.TYPE && paramtypes.length == 0) { System.out.println(methodname + "()"); } } } public static void setm(Class cls) { int i; String methodname; Class rettype; Class[] paramtypes; Method[] ma; System.out.println("Listing set methods for " + cls); /* get all methods for the cls Class, loop through methods and print all methods that are set methods - start with set, is a void return, and has one argument */ ma = cls.getMethods(); for(i = 0; i < ma.length; i++) { methodname = ma[i].getName(); rettype = ma[i].getReturnType(); paramtypes = ma[i].getParameterTypes(); if(methodname.startsWith("set") && rettype == Void.TYPE && paramtypes.length == 1) { System.out.println(methodname + "(" + paramtypes[0] + ")"); } } } }