我有一个很好的字段注释
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Foo {
// lots of useful, mandatory values here
}
我想创建一个类型注释
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface Bar {
...
}
这样,如果任何带有 @Bar
注释的类型包含未使用 @Foo 注释的字段,它们将抛出编译器警告。
换句话说,我希望 Bar
执行一个契约(Contract),其中所有 @Bar
-注释类的字段必须có@Foo
注释,否则我的编译器会收到一个很好的警告。
Điều này có thể thực hiện được không?
Cảm ơn!
没有注释让 javac 直接这样做。
但是,有些东西叫做“注释处理器”。它们作为编译运行的一部分运行,并且可以生成错误和警告。你可以写一个,让它在任何包含用 @Bar
注释的类型的源文件上触发,检查里面的每个字段,如果你发现没有 @Foo
注释。
注释处理器可以处理具有任何保留级别的注释。
Tôi là một lập trình viên xuất sắc, rất giỏi!