【发布时间】:2014-11-23 13:06:14
【问题描述】:
我有自定义注释类
@Retention(RetentionPolicy.RUNTIME)
public @interface Range {
int min();
int max();
}
我有另一个类有很多字段,我想使用注释来检查字段的值是否在范围内。
public class AsdFile {
@Range(min = 0, max = 59)
private int sec;
@Range(min = 0, max = 59)
private int minsec;
@Range(min = 0, max = 24)
private int hour;
@Range(min = 1, max = 31)
private int day;
我想在这个类中写一个方法来控制这样的范围
public void validateRange(int input)
{
Field[] fields = this.getClass().getDeclaredFields();
for(Field field: fields)
{
if (field.isAnnotationPresent(Range.class))
{
Range range = field.getAnnotation(Range.class);
int max = range.max();
int min = range.min();
if ( ( input <= max ) && (input >= min) )
{
System.out.println("Value in range");
}
else
{
System.out.println("Value is not in range");
}
}
}
}
我想控制特定注释的值,但我不知道该怎么做
【问题讨论】:
-
看来你的代码没问题。什么是错误?
-
它检查所有带注释字段的范围
-
秒:34 最大值:59 分钟:0 范围内的最大值:59 分钟:0 范围内的最大值:24 分钟:0 不在范围内,最大值:31 分钟:1 不在范围内,最大值:12 分钟:1 不在范围,但我只想控制一秒钟
标签: java annotations