JAVA自定义注释:在特定条件下限制注释参数

时间:2018-09-21 18:06:16

标签: java enums java-annotations

我开始学习Java注释,我想将其用作某种Generator标签。我只想生成随机文本,仅数字或文本和数字。

这是我的自定义注释:

public @interface RandomGenerator {

    public int length() default 5;

    public GeneratorTypeEnum type();

    public GeneratorCaseTypeEnum caseType() default GeneratorCaseTypeEnum.TO_LOWER_AND_UPPER;

}

到目前为止,一切都很好。我正在使用enum来提供一些额外的定义(如果被客户端使用)。这是初始化: 我有一个使用注释的班级

public class Employee {

    @RandomGenerator(type = GeneratorTypeEnum.NUMBERS_ONLY, caseType = GeneratorCaseTypeEnum.TO_LOWER_AND_UPPER)
    private String id;

    private String name;
    // getters and setters
}

但是正如您所看到的,我可以将GeneratorTypeEnum.NUMBERS_ONLYcaseType GeneratorCaseTypeEnum.TO_LOWER_AND_UPPER一起使用,这显然不好,因为没有大写或小写数字。

枚举:

GeneratorTypeEnum

public enum GeneratorTypeEnum {
    TEXT_AND_NUMBERS,
    NUMBERS_ONLY, 
    TEXT_ONLY
}

GeneratorCaseTypeEnum

public enum GeneratorCaseTypeEnum {
    TO_LOWER, 
    TO_UPPER, 
    TO_LOWER_AND_UPPER
}

问题:

  1. 有没有办法限制注释中的参数?
  2. 如果对问题#1的回答为否,则可以给出您的理论或观点,如果不是初学者,可以请提供一些链接以供参考。

非常感谢。

PS:我感到很难受,因为我是个初学者,所以无法提供任何反复试验的解决方案。

0 个答案:

没有答案