You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Person.java 1.2KB

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