xref: /aosp_15_r20/external/javassist/sample/reflect/Person.java (revision f1fbf3c2ab775ce834e0af96b7a85bdc7a0eac65)
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