1、前言
Java的注解现在非常的流行,注解不仅能让代码整洁美观,而且太多的功能只有注解方案。
在工作中常使用的Spring框架尤其常见,几乎可以说没有注解无法完整的使用Spring。
2、开始
那么如何自己写一个注解呢?
下面跟着我看一个简单的注解实现校验一个类中字段是否符合要求的例子。
2.1、定义一个注解类Check。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
/**
* 检查类中字段是否符合规则
*/
public @interface Check {
int maxLen() default 20; // 字段最大长度,默认20个字符
}
2.2、在一个类User中使用注解。
/**
* 用户信息类
*/
public class User {
@Check(maxLen=10)
/** 用户名,最大长度10个字符 */
String name = "";
}
2.3、处理注解
在定义了注解、使用了注解后,最重要的步骤就是处理注解。在Test类中进行注解的处理。
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
User user = new User();
user.name = "123123";
checkField(user);
user.name = "123123123123";
checkField(user);
}
public static boolean checkField(Object obj) {
Field[] fields = obj.getClass().getFields();
for(Field field : fields) {
Check check = field.getAnnotation(Check.class);
if(field.get(obj).toString().length() > check.maxLen()) {
throw new Exception(field.getName() + "字段长度太长");
} else {
System.out.println(field.getName() + "字段长度通过验证");
}
}
}
}
打印结果为:
name字段长度通过验证
name字段长度太长
3、总结
一般在项目中,自定义的注解有很多用途,例如上边举得例子就可以用于检查类变量的值是否符合要求,在实际应用中常这样使用:
- 在开发API接口的时候,在解析报文后,校验收到的请求报文字段是否符合接口规定。
- 在开发web工程时,配合Filter,校验页面输入项是否符合要求。
- 在注解类中,甚至可以使用正则表达式,能为校验字段提供更多的更灵活的方式方法。