Applet

This applet performs the same update operations as the preceding application.

import java.lang.reflect.*;

public class ReflectUpdate {


 public ReflectUpdate () {
 super ();
 } // end ReflectUpdate constructor

 public static void main ( String [ ] args ) {

 try {

 Class theClass = Class.forName("Mystery");
 String s = theClass.getName();
 System.out.println("Name of class: " + s);
 System.out.println();

 System.out.println("Methods declared in class: " );
 Method[] theMethods = theClass.getDeclaredMethods();
 for (int i = 0; i < theMethods.length; i++) {
 String methodName = theMethods[i].getName();
 System.out.println(i+" Method Name: " + methodName);
 String returnString = theMethods[i].getReturnType().getName();
 System.out.println(" Return Type: " + returnString);
 Class[] parmTypes = theMethods[i].getParameterTypes();
 System.out.print(" Parameter Types:");
 for (int j = 0; j < parmTypes.length; j++) {
 String parmString = parmTypes[j].getName();
 System.out.print(" " + parmString);
 } // end for: j
 System.out.println();
 System.out.println();
 } // end for: i

 Object theObject = theClass.newInstance();
 Class thisClass = theObject.getClass();
 Method thisMethod = thisClass.getMethod("getMessage",null);

 String result1 = (String) thisMethod.invoke( theObject, null);
 System.out.println("getMessage returns: " + result1 );
 System.out.println();

 Method thatMethod = thisClass.getMethod("getNumber",null);
 Integer result2 = (Integer) thatMethod.invoke( theObject, null);
 System.out.println("getNumber returns: " + result2 );
 System.out.println();

 Object [] argMessage = new Object [] {"Updated message from class, Mystery!"};
 Class [] parmsMessage = new Class [] { String.class };
 Method setMessageMethod = thisClass.getMethod ("setMessage", parmsMessage);
 setMessageMethod.invoke ( theObject, argMessage );
 String result3 = (String) thisMethod.invoke( theObject, null);
 System.out.println("getMessage returns: " + result3 );
 System.out.println();

 Object [] argNumber = new Object [1];
 argNumber [0] = new Integer ( 8 );
 Class [] parmsNumber = new Class [] { Integer.class };
 Method setNumberMethod = thisClass.getMethod ("setNumber", parmsNumber);
 setNumberMethod.invoke ( theObject, argNumber );
 Integer result4 = (Integer) thatMethod.invoke( theObject, null);
 System.out.println("getNumber returns: " + result4 );
 System.out.println();



 } // end try

 catch ( ClassNotFoundException e ) {
 System.out.println ( "Class not found: " + e );
 }
 catch (InstantiationException e) {
 System.out.println ( "Instantion error: " + e );
 }
 catch (IllegalAccessException e) {
 System.out.println ( "Illegal access: " + e );
 }
 catch (NoSuchMethodException e) {
 System.out.println( "No such method: " + e);
 }
 catch (InvocationTargetException e) {
 System.out.println( "Target exception: " + e);
 }

 } // end main


} // end ReflectUpdate

Run the applet (expects server on jbspc.cs.unc.edu)

Run the applet (expects server on wwwj.cs.unc.edu)

Note: data will appear on the Java console.