注解的理解

注解的理解

1.注解Annotation也称为元数据Metadata,用于修饰解释 包,类,方法,属性,构造器,局部变量等数据信息

2.和注释一样,注解不影响程序的逻辑,但注解可以被编译或运行,相当马天宇的在代码中补充信息

3.在JavaSE中,注解的使用目的比较简单,例如标记过时功能,忽略警告等,在JavaEE中注解占据了更加重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等

基本的Annotation介绍

使用Annotation时要在前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素

三个基本的Annotation:

1.@Override:限定某个方法,是重写父类的方法,该注解只能用于方法

2.@Deprecated:用于表示某个程序元素【类,方法等】已过时

3.@SuppressWarnings:抑制编译器警告

补充说明:@interface的说明

@interface说明是注解类,不是interface接口,注解类是JDK1.5加入的

@Override注解

Override限定某个方法,是重写父类的方法,该注解只能用于方法上

使用细节说明:

1.@Override表示指定重写父类的方法【从编译层面验证】,如果父类没有该方法,则会报错

2.如果不写@Override注解,而父类仍该方法,仍然构成重写

3.如果不写@Override只能修饰方法,不能修饰其它类,包,属性等【意思是只能作用在方法上】

4.查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法

5.@Target是修饰注解的注解,称为元注解

package JAVA面向对象高级部分.annotation;

/**
 * @author: 海康
 * @version: 1.0
 */
public class Override01 {
    public static void main(String[] args) {

    }
}

//父类
class Father {
    public void show(){}
}

//子类
class Son extends Father{
    @Override
    public void show(){
        System.out.println("son");
    }
}

@Deprecated的说明

1.用于表示某个程序元素【类,方法等】已经过时

2.可以修饰方法,类,字段,包,参数等

3.@target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,RACKAGE,PARAMETER,TYPE})

@Deprecated的作用可以做到新旧版本的兼容和过渡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sI3mdUTl-1644043918946)(E:\Typora笔记\java笔记\img\image-20220130213157902.png)]

**@SuppressWarnings**注解

@Suppresswarnings:抑制编译警告

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0N6TbHns-1644043918947)(E:\Typora笔记\java笔记\img\image-20220131115905513.png)]

元注解
3.4:元注解:用于描述注解的注解

元注解的种类

  1. Retention:指定注解的作用范围,三种SOURCE, CLASS, RUNTIME
  2. Target:指定注解可以在哪些地方使用
  3. Documented:指定该注解是否会javadoc体现
  4. Inherited:子类会继承父类的注解

@Retention注解

说明:只能用于修饰一个Annotation定义,用于指定同·Annotation可以保留多长时间, @Rentention包含一个@RententionPolicy类型的成员变量,使用@Rentention时必须为该value成员变量指定值:

@Retention的三种值

  1. @RetentionPolicy.SOURCE:编译器使用后,直接丢弃这种策略的注释
  2. @RetentionPolicy.CLASS:编译器把注解记录在class文件中,当运行JAVA程序时,JVM不会保留注解,这个是默认值
  3. @RetentionPolicy.RUNTIME:编译器将把注解记录在class文件中,当运行Java程序时,jvm会保留注解,程序可以通过反射获取该注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7jmFyvts-1644043918948)(E:\Typora笔记\java笔记\img\image-20220131174521045.png)]

@Target注解

基本说明:用于修饰Annotation定义,用于指定被修饰Annotation能用于修饰哪些程序元素,@Target也包含一个名为value的成员变量

  1. @Target:用于描述注解能够作用的位置

    • ElementType的取值:
      • TYPE:可以作用于类上
      • METHOD:可以作用于方法上
      • FIELD:可以作用于成员变量上
  2. @Retention:用于描述注解被保留的阶段

    • @Retention(RetentionPolicy.RUNTIME)//在自定义注解一般定义是RUNTIME的值
      //当前被描述的注解,会保留到CLASS字节码文件中,并被JVM读取到
      
  3. @Documented:描述注解是否被抽取到API文档中

  4. @Inherited:描述注解是否被子类继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值