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