概要:由于java提供的注解功能不能满足项目的需要,需要更具具体的内容自定义需要的注解。
java提供了4中注解,专门负责新注解的创建
1、@Target
@Target:
表示该注解可以用于什么地方,可能的ElementType参数有:
CONSTRUCTOR:构造器的声明
FIELD:域声明(包括enum实例)
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类、接口(包括注解类型)或enum声明
2、@Retention
@Retention:
表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用,但会被VM丢弃
RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息
3、@Document
将注解包含在Javadoc中
4、@Inherited
允许子类继承父类中的注解
我们自己新建一个注解,步骤如下:
1、新建注解类
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface IColumn {、
//字段是否可以为空
boolean isNullable() default true;
//字段描述
String description() default "";
//是否允许特殊字符,true,允许,false,不允许
boolean isSpecialCharCheck() default false;
}
2、使用注解
@IColumn(isNullable = false,description = "测试字段",isSpecialCharCheck = true)
private String testField;
经过上述两个步骤处理后,在运行的时候可以通过Field.isAnnotationPresent(IColumn.class)判断是否存在该注解,通过Field.getAnnotation(IColumn.class)获取到IColumn对象,进而对注解类里面的对象iColumn.isNullable()进行调用处理。