Java tutorial
/* Java Reflection in Action Ira R. Forman and Nate Forman ISBN 1932394184 Publisher: Manning Publications Co. */ import java.awt.Color; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class GetColor { static public void main(String[] args) { Rabbit rabbit = new Rabbit(); //start extract snippet3 setObjectColor(rabbit, Color.WHITE); //stop extract snippet3 if (!rabbit.setColorCalled) throw new RuntimeException(); } //start extract setObjectColor public static void setObjectColor(Object obj, Color color) { Class cls = obj.getClass(); //#1 try { Method method = cls.getMethod("setColor", //#2 new Class[] { Color.class }); method.invoke(obj, new Object[] { color }); //#3 } catch (NoSuchMethodException ex) { //#4 throw new IllegalArgumentException(cls.getName() + " does not support" + "method setColor(:Color)"); } catch (IllegalAccessException ex) { //#5 throw new IllegalArgumentException( "Insufficient access permissions to call" + "setColor(:Color) in class " + cls.getName()); } catch (InvocationTargetException ex) { //#6 throw new RuntimeException(ex); } } //stop extract setObjectColor static public class Rabbit { public boolean setColorCalled = false; public void setColor(Color c) { setColorCalled = true; } } }