【学习笔记】Java基础入门——第12章·注解

第12章 注解

12.1  基本内置注释

注解Annotation是一种引用数据类型。编译之后也是生成xxx.class文件。

  • @Override 注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。如果该方法不是覆盖父类的方法,将会在编译时报错。
  • @Deprecated 的作用是对不应该再使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与 javadoc 里的 @deprecated 标记有相同的功能。

12.2  自定义注解

12.2.1 语法格式

[修饰符列表] @interface 注解类型名{}

12.2.2 属性

通常可以在注解当中定义属性,并且可以指定默认值。如果一个注解当中有属性,那么必须给属性赋值(除非该属性使用了default指定了默认值)。如果一个注解的属性的名字是value,并且只有一个属性的话,在使用的时候,该属性名可以省略。

注解当中的属性可以是8种基本数据类型和其相应的数组形式、String、Class和枚举类型。

public class ReflectAnnotationTest {
    public static void main(String[] args) throws Exception{
        Class c = Class.forName("annotation5.MyAnnotationTest");
        // 判断类上面是否有@MyAnnotation
        if(c.isAnnotationPresent(MyAnnotation.class)){
            // 获取该注解对象
            MyAnnotation myAnnotation = (MyAnnotation)c.getAnnotation(MyAnnotation.class);
            System.out.println("类上面的注解对象" + myAnnotation); // @com.bjpowernode.java.annotation5.MyAnnotation()
            // 获取注解对象的属性怎么办?和调接口没区别。
            String value = myAnnotation.value();
            System.out.println(value);
        }
    }
}

12.3  元注解

12.3.1 Target

用来标注“注解类型”的“注解”,这个Target注解用来标注“被标注的注解”可以出现在哪些位置上。

  • @Target(ElementType.METHOD):表示“被标注的注解”只能出现在方法上。
  • @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})表示该注解可以出现在:构造方法上、字段上、局部变量上、方法上、....、类上...

12.3.2 Retention

用来标注“注解类型”的“注解”。这个Retention注解用来标注“被标注的注解”最终保存在哪里。

  • @Retention(RetentionPolicy.SOURCE):表示该注解只被保留在java源文件中。
  • @Retention(RetentionPolicy.CLASS):表示该注解被保存在class文件中。
  • @Retention(RetentionPolicy.RUNTIME):表示该注解被保存在class文件中,并且可以被反射机制所读取。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值