1、自定义注解需要用到那些元注解
1、@Retention
2、@Target
3、@Documented
4、@Inherited
2、元注解解释说明
@Retention:表示需要在什么级别保存该注释消息,可选参数如下:(RetentionPoicy)
RetentionPolicy.SOURCE:停留在java源文件,编译器被丢掉
RetentionPolicy.CLASS:停留在class文件,但是会被jvm丢弃(默认)
RetentionPolicy.RUNTIME:注解在运行时仍然可用,因此可以通过反射机制读取
@Target:用于指定注解可以用于那些java元素,默认是任意元素,可用参数(ElementType)
ElementType.CONSTRUCTOR:构造器声明
ElementType.FIELD:成员变量、对象、属性
ElementType.LOCAL_VARIABLE:局部变量声明
ElementType.METHOD:方法声明
ElementType.PACKAGE:包声明
ElementType.PARAMETER:参数声明(废弃)
ElementType.TYPE:类、接口(包括注解类型)或者是enum声明
@Documented :将注解包含在javadoc中,并且在生成的文档中显示该注解的信息
@Inherited:允许子类继承父类中的注解
代码示例:
创建自定义注解:
package com.example.strategy;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Inherited
public @interface Resources {
/*
* 根据实际业务场景来定义这个value
* */
String value() default "";
}
使用自定义注解:
@Resources(ResourcesConstant.EQUIP)
@Service
public class EquipStrategy implements ResourcesStrategy {
@Override
public ResourcesEntity getResourcesData(String type) {
ResourcesEntity resources = new ResourcesEntity();
return resources;
}
}