有没有办法在Java中验证注释有效性?
例如,我可能有一个注释
public @interface Foo {
int number();
String name();
}
public @interface Foos {
Foo[] value();
/* Foos() {
for(int i=0; i<value().length; ++i) {
if( i != value()[i].number() ) {
throw new IllegalArgumentException();
}
}
} */
}
我可以约束numbers
从零开始并持续进行吗?
(在上面的示例中,我在注释注释构造函数中编写了此检查)
更新
注释用法的一些示例:
// correctly annotated class
@Foos({@Foo(number=0, name="first"), @Foo(number=1,name="second")})
class MyCorrectAnnotatedClass {
}
// incorrectly annotated class 1
// number starts from 1 not form 0
@Foos({@Foo(number=1, name="first"), @Foo(number=2,name="second")})
class MyIncorrectAnnotatedClass1 {
}
// incorrectly annotated class 2
// number sequence has missed 1
@Foos({@Foo(number=0, name="first"), @Foo(number=2,name="second")})
class MyIncorrectAnnotatedClass2 {
}
答案 0 :(得分:0)
您的意思是要检查所有使用注释的地方,以便每个数字从0开始只使用一次吗?这不可能以简单的方式实现。
如果你真的想这样做,你必须编写扫描类路径上所有类的代码,找到使用注释的所有类,然后检查注释的值。 (如果注释用于方法或其他东西而不是类,那就更难了。)
您无法将实现代码(如构造函数)添加到注释中。这样,注释类似于接口。