涉及到java开发时的一些注解(元注解)

涉及到java开发时的一些注解(元注解)

在学习一些作者原创作品时,见到一些平时开发时用到不多的一些注解,为了方便自己以后参考,在此留一些记录

java元注解

@Retention

英译中:保留
用途:保留位置

@Retention(RetentionPolicy.SOURCE)

仅存在与源码中,在编译成class字节码文件后就不展示

@Retention(RetentionPolicy.CLASS)

默认的保留策略,注解会在class文件中存在,但运行时无法获得

@Retention(RetentionPolicy.RUNTIME)

注解会在class文件中存在,并且运行时可以通过反射获取到

@Target

英译中:目标
用途:作用目标

@Target(ElementType.TYPE)

接口、类、枚举、注解

@Target(ElementType.FIELD)

字段、枚举的常量

@Target(ElementType.METHOD)

方法

@Target (ElementType.PARAMETER)

方法参数

@Target (ElementType.CONSTRUCTOR)

构造函数

@Target (ElementType.LOCAL_VARIABLE)

局部变量

@Target (ElementType.ANNOTATION_TYPE)

注解

@Target (ElementType.PACKAGE)

@Document

用途:说明该注解将被包含在javadoc中

@Inherited

用途:说明子类可以继承父类中的该注解

实例

1.创建注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestAnnotationI {

    public String testGetStr();

    int value();
}

2.调用注解

public class TakedClassImpl implements TakedClass{

    private static final int ARG_1 = 10;

    @Override
    @TestAnnotationI(testGetStr = "1", value = ARG_1)
    public String test1(String arg) {
        System.out.println("start -------------");
        return "1";
    }

}

3.反射获取注解,打印注解的参数值

public static String testAnnotation(String arg1){

    Class ipt=TakedClassImpl.class;
    Method[] mts=ipt.getMethods();
    for(Method mt:mts){
        TestAnnotationI ad=mt.getAnnotation(TestAnnotationI.class);//如果方法上  没有该注解  则返回null
         int value=ad.value();
         System.out.println("value:"+value);
    }
    return arg1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值