1*f1fbf3c2SXin Li package sample.reflect; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li import javassist.tools.reflect.*; 4*f1fbf3c2SXin Li 5*f1fbf3c2SXin Li public class VerboseMetaobj extends Metaobject { VerboseMetaobj(Object self, Object[] args)6*f1fbf3c2SXin Li public VerboseMetaobj(Object self, Object[] args) { 7*f1fbf3c2SXin Li super(self, args); 8*f1fbf3c2SXin Li System.out.println("** constructed: " + self.getClass().getName()); 9*f1fbf3c2SXin Li } 10*f1fbf3c2SXin Li trapFieldRead(String name)11*f1fbf3c2SXin Li public Object trapFieldRead(String name) { 12*f1fbf3c2SXin Li System.out.println("** field read: " + name); 13*f1fbf3c2SXin Li return super.trapFieldRead(name); 14*f1fbf3c2SXin Li } 15*f1fbf3c2SXin Li trapFieldWrite(String name, Object value)16*f1fbf3c2SXin Li public void trapFieldWrite(String name, Object value) { 17*f1fbf3c2SXin Li System.out.println("** field write: " + name); 18*f1fbf3c2SXin Li super.trapFieldWrite(name, value); 19*f1fbf3c2SXin Li } 20*f1fbf3c2SXin Li trapMethodcall(int identifier, Object[] args)21*f1fbf3c2SXin Li public Object trapMethodcall(int identifier, Object[] args) 22*f1fbf3c2SXin Li throws Throwable { 23*f1fbf3c2SXin Li System.out.println("** trap: " + getMethodName(identifier) + "() in " 24*f1fbf3c2SXin Li + getClassMetaobject().getName()); 25*f1fbf3c2SXin Li return super.trapMethodcall(identifier, args); 26*f1fbf3c2SXin Li } 27*f1fbf3c2SXin Li } 28