Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中创建自定义注释,以允许参数具有指定范围内的值?_Java_Annotations - Fatal编程技术网

如何在Java中创建自定义注释,以允许参数具有指定范围内的值?

如何在Java中创建自定义注释,以允许参数具有指定范围内的值?,java,annotations,Java,Annotations,我想创建一个只能应用于方法参数的注释,并且应该指定参数可以接受的值的范围 假设我有一个注解@MyAnnotation,它接受从0到255的值 现在如果我有下面的方法 public boolean isInRange(@MyAnnotation int value) { ....... ....... } 有些类试图用以下方式来称呼它: isInRange(300) 我希望注释给出一个警告,说明该值不可接受,应该在范围内(显示范围)。在将正确的值传递给方法之前,我也不希望编译器编译它 现在我知道

我想创建一个只能应用于方法参数的注释,并且应该指定参数可以接受的值的范围

假设我有一个注解
@MyAnnotation
,它接受从0到255的值

现在如果我有下面的方法

public boolean isInRange(@MyAnnotation int value) {
.......
.......
}
有些类试图用以下方式来称呼它:

isInRange(300)

我希望注释给出一个警告,说明该值不可接受,应该在范围内(显示范围)。在将正确的值传递给方法之前,我也不希望编译器编译它

现在我知道
@Target(ElementType.PARAMETER)
导致注释仅应用于参数,但我不知道如何实现范围逻辑,也不知道保留策略是否应该是
RetentionPolicy.SOURCE
RetentionPolicy.RUNTIME
的注释。这样做。在编译时强制执行该属性——也就是说,如果该方法的客户端可能传递非法值,编译器将向您发出警告


如果需要自己的注释,您可以重复使用该注释,或者研究其实现。

如果有人执行
isInRange(someMethodThatReturnsAnInt())?@OliverCharlesworth在这种情况下,执行应该抛出一个异常,打印一条清晰的消息。但我仍然希望注释在键入值时发出警告