1*f1fbf3c2SXin Li /* 2*f1fbf3c2SXin Li * A base-level class controlled by VerboseMetaobj. 3*f1fbf3c2SXin Li */ 4*f1fbf3c2SXin Li 5*f1fbf3c2SXin Li package sample.reflect; 6*f1fbf3c2SXin Li 7*f1fbf3c2SXin Li import javassist.tools.reflect.Metalevel; 8*f1fbf3c2SXin Li import javassist.tools.reflect.Metaobject; 9*f1fbf3c2SXin Li 10*f1fbf3c2SXin Li public class Person { 11*f1fbf3c2SXin Li public String name; 12*f1fbf3c2SXin Li 13*f1fbf3c2SXin Li public static int birth = 3; 14*f1fbf3c2SXin Li 15*f1fbf3c2SXin Li public static final String defaultName = "John"; 16*f1fbf3c2SXin Li Person(String name, int birthYear)17*f1fbf3c2SXin Li public Person(String name, int birthYear) { 18*f1fbf3c2SXin Li if (name == null) 19*f1fbf3c2SXin Li this.name = defaultName; 20*f1fbf3c2SXin Li else 21*f1fbf3c2SXin Li this.name = name; 22*f1fbf3c2SXin Li 23*f1fbf3c2SXin Li birth = birthYear; 24*f1fbf3c2SXin Li } 25*f1fbf3c2SXin Li getName()26*f1fbf3c2SXin Li public String getName() { 27*f1fbf3c2SXin Li return name; 28*f1fbf3c2SXin Li } 29*f1fbf3c2SXin Li getAge(int year)30*f1fbf3c2SXin Li public int getAge(int year) { 31*f1fbf3c2SXin Li return year - birth; 32*f1fbf3c2SXin Li } 33*f1fbf3c2SXin Li main(String[] args)34*f1fbf3c2SXin Li public static void main(String[] args) { 35*f1fbf3c2SXin Li String name; 36*f1fbf3c2SXin Li if (args.length > 0) 37*f1fbf3c2SXin Li name = args[0]; 38*f1fbf3c2SXin Li else 39*f1fbf3c2SXin Li name = "Bill"; 40*f1fbf3c2SXin Li 41*f1fbf3c2SXin Li Person p = new Person(name, 1960); 42*f1fbf3c2SXin Li System.out.println("name: " + p.getName()); 43*f1fbf3c2SXin Li System.out.println("object: " + p.toString()); 44*f1fbf3c2SXin Li 45*f1fbf3c2SXin Li // change the metaobject of p. 46*f1fbf3c2SXin Li if (p instanceof Metalevel) { 47*f1fbf3c2SXin Li ((Metalevel)p)._setMetaobject(new Metaobject(p, null)); 48*f1fbf3c2SXin Li System.out.println("<< the metaobject was changed.>>"); 49*f1fbf3c2SXin Li } 50*f1fbf3c2SXin Li 51*f1fbf3c2SXin Li System.out.println("age: " + p.getAge(1999)); 52*f1fbf3c2SXin Li } 53*f1fbf3c2SXin Li } 54