java注解

注解

一种标记,用来给计算机看的。

元注解

用来标注“普通注解”的注解。

Target

指定可以标注的目标或者可以标注在哪个上面。

  • ElementType.TYPE

  • ElementType.FIELD 属性

  • ElementType.METHOD 方法

  • ElementType.CONSTRUCTOR 构造器

Retention

保存的地方。

  • RetentionPolicy.SOURCE 保存在源文件
  • RetentionPolicy.CLASS 保存在.class文件
  • RetentionPolicy.RUNTIME 保存在.class文件并可以被反射读取

内置注解

Override

只能放在方法上,判断该方法是否重写父类的方法。

Deprecated

可以放在类、方法、字段、构造器等上面,表示(这个已过时,不建议使用),但如果使用也可以正常使用。

编写方式

//可以加元注解,也可以不加
public @interface 注解名{
    //可以有属性
    属性类型 属性名();
    //属性类型可以是:
   //   基本数据类型、String、枚举、Class和相应的数组。
    String value();
    int id() default 1;//可以写默认值
    double[] nums();
}

使用方法

在相应的代码上加注解。

//注解中的参数一般是(属性名=值,属性名=值)
@MyAnnotation(value = "zhangsan ")//只有value
@MyAnnotation("zhangsan ")//只有value,可以不写value
@MyAnnotation()//只有id,不写值默认为1
@MyAnnotation(nums = {12.2,576.2})//只有数组nums
@MyAnnotation(nums = 12.2)//只有数组nums且数组的值只有一个,可以省略花括号
    void run(){

    }
  1. 当属性名为value,并且只有一个属性名时,value可以不写(省略)。
  2. 如果属性有默认值时,参数可以不写。
  3. 如果属性是数组且数组的值只有一个时,可以省略花括号。

通过反射获取注解

获取注解的Retention必须是RUNTIME的。

public class MyAnnotationTest1 {
    @MyAnnotation(value = "zhangsan",i=2)
    void run(){}
}
  1. 要获取注解上的值,先要获取注解
  2. 要获取注解,先要获取方法,因为该注解是在方法上的。
  3. 要获取方法,先获取类。
        //获取类
        Class aClass = Class.forName("base.注解.MyAnnotationTest1");
        //获取类的run方法
        Method method=aClass.getDeclaredMethod("run");
        //如果run方法上有MyAnnotation类型的注解
        if(method.isAnnotationPresent(MyAnnotation.class)){
            //获取注解
            MyAnnotation myAnnotation=method.getAnnotation(MyAnnotation.class);
            //获取注解的值
            String value = myAnnotation.value();
            System.out.println(myAnnotation.i());//2
            System.out.println(value);//zhangsan
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值