java四大元注解(自定义注解须知)
四大注解
1. @Target
2. @Retention
3. @Documented
4. @Inherited
@Target
@Target 注解:指明修饰的这个注解的使用范围,即被描述的注解可用在哪里。
例:@Target({ElementType.METHOD}):
ElementType 的取值:
- TYPE:类,接口或者枚举;
- FIELD:域,包含枚举常量;
- METHOD:方法;
- PARAMETER:参数;
- CONSTRUCTOR:构造方法;
- LOCAL_VARIABLE:局部变量;
- ANNOTATION_TYPE:注解类型;
- PACKAGE:包;
@Retention
@Retention 注解:指明修饰的注解的生存周期,即会保留到哪个阶段。
例:@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy 的取值:
- SOURCE:源码级别保留,编译后即丢弃。
- CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
- RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
@Documented
@Documented 注解:指明修饰的注解,可以被例如javadoc此类的工具文档化,只负责标记,没有成员取值。
@Inherited
@Inherited注解:表示允许子类继承父类中的注解。
另外:@interface
想要自定义一个注解还需要 :
@interface:声明一个注解,方法名对应参数名,返回值类型对应参数类型。
自定义注解案例
使用案例:
/**
* @author zmn
* Date 2019/12/19
* Time 09:29
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DataSourceDefiner {
String value() default "write";
}
本人是Java初学菜鸟,文章内容不成熟,还望给看官大佬海涵指导!!!