Mega Code Archive

 
Categories / Java / Reflection
 

Get Color

/* 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;     }   } }