我想创建一个只能应用于方法参数的注释,并且应该指定参数可以接受的值范围。
假设我有一个注释@MyAnnotation
,它接受0到255之间的值。
现在,如果我有以下方法
public boolean isInRange(@MyAnnotation int value) {
.......
.......
}
并且某些类尝试按以下方式调用它:
isInRange(300);
我希望注释能够发出警告,说明该值是不可接受的,并且应该在范围内(显示范围)。我也不希望编译器在将正确的值传递给方法之前编译它。
现在我知道@Target(ElementType.PARAMETER)
导致注释仅应用于参数,但我不知道如何实现范围逻辑,以及RetentionPolicy应该是RetentionPolicy.SOURCE
还是{{1 }}
答案 0 :(得分:1)
@IntRange
的Checker Framework注释。做这个。 Constant Value Checker在编译时强制执行属性 - 也就是说,如果方法的客户端可以传递非法值,编译器会发出警告。
如果您需要自己的注释,可以重复使用该注释,或研究其实现。