publicstaticvoid main(String[] args) {
MySubClass sub = new MySubClass();
MySubSubClass subsub = new MySubSubClass(); new RedefineAnnotationTarg().hi(false); new RedefineAnnotationTarg().hi(true); // @1 breakpoint
sub.hi(true);
subsub.hi(true);
}
if (isNewVersion) {
System.out.println("Checking for NEW versions of annotations in "
+ getClass());
}
// class annotations check:
Foo foo = getClass().getAnnotation(Foo.class); if (foo == null) { thrownew Error("FAIL: cannot get class_annotation from "
+ getClass());
}
String class_annotation = foo.value();
System.out.println("class annotation is: " + class_annotation); if (isNewVersion) { if (class_annotation.equals(Constants.new_class_annotation)) {
System.out.println("PASS: class_annotation was changed.");
} else {
System.out.println("FAIL: class_annotation was NOT changed.");
}
}
// field annotations check: try {
Field my_field = getClass().getField("dummy_field");
foo = my_field.getAnnotation(Foo.class); if (foo == null) { thrownew Error("FAIL: cannot get field_annotation from "
+ getClass() + ".dummy_field");
}
String field_annotation = foo.value();
System.out.println("field annotation is: " + field_annotation); if (isNewVersion) { if (field_annotation.equals(Constants.new_field_annotation)) {
System.out.println("PASS: field_annotation was changed.");
} else {
System.out.println( "FAIL: field_annotation was NOT changed.");
}
}
} catch (NoSuchFieldException nsfe) { thrownew Error("FAIL: cannot find field 'dummy_field' in "
+ getClass());
}
// method annotations check: try { Class params[] = newClass[1];
params[0] = Boolean.TYPE;
Method my_method = getClass().getMethod("hi", params);
foo = my_method.getAnnotation(Foo.class); if (foo == null) { thrownew Error("FAIL: cannot get field_annotation from "
+ getClass() + ".hi()");
}
String method_annotation = foo.value();
System.out.println("method annotation is: " + method_annotation); if (isNewVersion) { if (method_annotation.equals(Constants.new_method_annotation)) {
System.out.println("PASS: method_annotation was changed.");
} else {
System.out.println( "FAIL: method_annotation was NOT changed.");
}
}
} catch (NoSuchMethodException nsme) { thrownew Error("FAIL: cannot find method 'hi' in " + getClass());
}
// this subclass exists just to make the RedefineClasses() code do a // subclass walk to update the counter class MySubClass extends RedefineAnnotationTarg { int my_int_field_makes_me_different;
}
// this subclass exists just to make the RedefineClasses() code do a // sub-subclass walk to update the counter class MySubSubClass extends MySubClass { float my_float_field_makes_me_different;
}
class Constants { staticfinal String class_annotation = "Patrick's class comment"; staticfinal String new_class_annotation = "*NEW* Patrick's class comment";
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.