注解相关概念学习笔记

注解相关概念

注解简介:

  • 概述

    • 注解(Annotation),也叫元数据。一种代码界别的说明。他是JDk1.5以后版本引入的一个特性,与类、接口、枚举是在同一个层次
  • 作用:

    • 编写文档:通过代码里标识的注解生成文档(例如:生成文档doc文档)
    • 代码分析:通过代码里标识的注解对代码进行分析(例如:注解的反射)
      • 重要的:因为在框架中通常会采用注解的方式来代替配置文件,在通过反射获取注解中的配置信息
    • 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查(例如:override)
  • 常用的注解:

    • @Override:主要用于方法重写的校验
    • @Deprecated:主要用来标记方法以过时
    • @SuppressWarnings(“all”):压制所有警告
  • 自定义注解:

    • 简介:自定义注解就是一个继承了Annotation接口的接口

    • 格式:

      • 方式1:

        public interface MyAnnotation extends Annotation{}
        
      • 方式2(推荐)

        public @interface MyAnnotation{
        	public 数据类型 变量名() default 默认值;	//public, default默认值这部分可以省略
        }
        
  • 细节:

    • 注解的数据类型可以是如下的类型:
      • 所有的基本类型
      • 字符串,字节码文件(Class类型),枚举,注解类型
      • 以上所有类型的数组形式
    • 注解中的每个属性默认权限修饰符都是public,且属性可以有默认值
    • public,default默认值可以省略不写

元注解简介:

  • 概述:
    • 元注解是用来对我们自定义的注解进行一些限定
  • 常用的元注解:
    • @Target:用来限定注解能写到哪,不能写到哪
      • @ElementType.TYPE:限定注解可以写到类,接口上
      • @ElementType.TYPE:限定注解可以写到方法上
    • @Retention:用来限定注解在什么时期有效
      • source:只在源码期间有效
      • class:在源码,编译阶段有效
      • runtime:在所有阶段有效(源码,编译,运行)

注解解析

  • 获取BookShelf#showBook()方法上的@Book注解信息,并打印

    //1.获取BookShelf类的字节码文件对象
    class<BookShelf> clazz = BookShelf.class;
    //2.获取对象中的showBook方法
    Method showBook = calzz.getMethod("showBook");
    //判断showBook上是否有注解信息
    if(showBook.isAnnotationPresent(Book.class)){
    	//4.如果有,就获取该注解对象
    	Book book = showBook.getAnnotation(Book.class);
    	//5.通过注解对象获取注解中的各个属性值并打印
    	System.out.println(book.value());
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值