我想创建一个只能应用于方法参数的注释,应指定参数可以接受的值范围。
可以说我有一个注释@MyAnnotation
,并且接受0到255的值。
现在,如果我有以下方法
public boolean isInRange(@MyAnnotation int value) {
.......
.......
}
,有些类试图以以下方式称其为:
isInRange(300);
我希望注释发出警告,说该值是不可接受的,应该在范围内(显示范围(。我也不希望编译器对其进行编译,直到正确值传递给方法为止。
现在,我知道@Target(ElementType.PARAMETER)
仅将注释应用于参数,但是我不知道如何实现范围逻辑,以及是否应为RetentionPolicy.SOURCE
或RetentionPolicy.RUNTIME
CHECHER框架的@IntRange
注释。做这个。恒定值检查器在编译时执行属性 - 也就是说,编译器警告您,如果该方法的客户可以通过非法值。
您可以重新使用该注释,或者如果您想要自己的注释,可以研究其实现。