注解相关概念
注解简介:
-
概述
- 注解(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:在所有阶段有效(源码,编译,运行)
- @Target:用来限定注解能写到哪,不能写到哪
注解解析
-
获取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()); }