Java中的注释(参数)验证?

时间:2015-05-23 06:36:51

标签: java validation annotations

有没有办法在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 {
}

1 个答案:

答案 0 :(得分:0)

您的意思是要检查所有使用注释的地方,以便每个数字从0开始只使用一次吗?这不可能以简单的方式实现。

如果你真的想这样做,你必须编写扫描类路径上所有类的代码,找到使用注释的所有类,然后检查注释的值。 (如果注释用于方法或其他东西而不是类,那就更难了。)

您无法将实现代码(如构造函数)添加到注释中。这样,注释类似于接口。