1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*
- * A base-level class controlled by VerboseMetaobj.
- */
-
- package sample.reflect;
-
- import javassist.tools.reflect.Metalevel;
- import javassist.tools.reflect.Metaobject;
-
- public class Person {
- public String name;
-
- public static int birth = 3;
-
- public static final String defaultName = "John";
-
- public Person(String name, int birthYear) {
- if (name == null)
- this.name = defaultName;
- else
- this.name = name;
-
- birth = birthYear;
- }
-
- public String getName() {
- return name;
- }
-
- public int getAge(int year) {
- return year - birth;
- }
-
- public static void main(String[] args) {
- String name;
- if (args.length > 0)
- name = args[0];
- else
- name = "Bill";
-
- Person p = new Person(name, 1960);
- System.out.println("name: " + p.getName());
- System.out.println("object: " + p.toString());
-
- // change the metaobject of p.
- if (p instanceof Metalevel) {
- ((Metalevel)p)._setMetaobject(new Metaobject(p, null));
- System.out.println("<< the metaobject was changed.>>");
- }
-
- System.out.println("age: " + p.getAge(1999));
- }
- }
|