package sample.reflect; import javassist.tools.reflect.*; public class VerboseMetaobj extends Metaobject { public VerboseMetaobj(Object self, Object[] args) { super(self, args); System.out.println("** constructed: " + self.getClass().getName()); } public Object trapFieldRead(String name) { System.out.println("** field read: " + name); return super.trapFieldRead(name); } public void trapFieldWrite(String name, Object value) { System.out.println("** field write: " + name); super.trapFieldWrite(name, value); } public Object trapMethodcall(int identifier, Object[] args) throws Throwable { System.out.println("** trap: " + getMethodName(identifier) + "() in " + getClassMetaobject().getName()); return super.trapMethodcall(identifier, args); } }