我有自定义注释类
@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");
}
}
}
}
我想控制特定注释的值,但我不知道该怎么做
答案 0 :(得分:0)
我想你想要对特定领域进行验证。您的代码将在四个字段上进行验证。
如果我正确理解您的问题,这可能会对您有所帮助。即。
在方法中传递字段名称的参数:
asdFile.validateRange("sec",10);
检查字段名称后检查验证:
public void validateRange(String fieldname, int input)
{
Field[] fields = this.getClass().getDeclaredFields();
for(Field field: fields)
{
if(field.getName().equals(fieldname)){
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; sec&#34;只有字段。