在Java中是否有一种方法可以为匿名内部类添加注释?
在这个例子中,你能否为Class2添加一个类级别的注释?
public void method1() {
add(new Class2() {
public void method3() {}
});
}
在Java中是否有一种方法可以为匿名内部类添加注释?
在这个例子中,你能否为Class2添加一个类级别的注释?
public void method1() {
add(new Class2() {
public void method3() {}
});
}
不行。您需要将其提升为“适当”的类。如果必要,它仍然可以在外部类中进行作用域限定,因此它不需要成为顶级类、公共类或任何其他类型的类。但是,它确实需要一个适当的类定义来附加注释。
@Target({ElementType.TYPE_USE})
修饰时,它可以在运行时用于注释匿名类。例如:@Target({ ElementType.TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
String value();
}
Object o = new @MyAnnotation("Hello") Object() {};
棘手的部分是如何访问注释:
Class<?> c = o.getClass();
AnnotatedType type = c.getAnnotatedSuperclass();
System.out.println(Arrays.toString(type.getAnnotations()));
o.getClass().getAnnotatedSuperclass().getAnnotations()
访问它们,这对我来说似乎很奇怪和违反直觉。 - Qw3ry