Java web学习-注解
JDK中预定义的一些注解
-
Override:检测被该注解标注的方法是否是继承自父类的
-
@Deprecated:将该注解标注的内容,表示已经过时
-
@SuppressWarnings:压制警告的
- 一般传参数all @SuppressWarnings(“all”)
自定义注解
-
格式
元注解
public @interface 注解名称{}
public @interface Myanno { }
-
本质:注解本质上就是一个接口,该接口默认继承Annotation接口
- public interface MyAnno extends java.lang.annotation.Annotation {}
-
属性:接口中可以定义的内容,接口中的抽象方法
-
要求
-
属性的返回值类型
- 基本数据类型
- String
- 枚举
- 注解
- 以上类型的数组
-
定义了的属性,在使用时需要给属性赋值
@Myanno(age=13,name="zhangsan",per=Person.P1(enum),anno2=@MyAnno2(注解类型),strs={"abc","bbb"}) public class AnnoDemo1 { }
- 如果定义属性时,使用default关键字给属性默认初始值,则使用注解是可以不进行赋值
- 如果只有一个属性要赋值,并且名称是value时,则value可以省略,直接定义值就可以了
- 数组赋多个值用大括号,只有一个值大括号可以省略
-
-
-
元注解:用于描述注解的注解
- @Target:描述注解能够作用的地方
- ElementType取值
- TYPE:可以作用到类上
- METHOD:可以作用到方法上
- FIELD:可以作用于成员变量上
- ElementType取值
- @Retention:描述注解被保留的阶段
- @Retention(RetentionPolicy.RUNTIME):当前被描述的注解会保留到class字节码文件中,并被JVM读取到,一般都用这个
- @Documented:描述注解是否被抽取到API文档中
- @Inherited:描述这个注解是否被子类继承
- @Target:描述注解能够作用的地方
在程序中使用(解析)注解:获取注解中定义的属性值
-
获取注解定义的位置的对象(Class Method Field)
-
获取指定的注解
-
getAnnotattion(Class)
Pro an = reflectTestClass.getAnnotation(Pro.class);//这行代码其实是在内存中去生成了一个该注解接口的子类实现对象
-
-
调用注解中的抽象方法获取配置的属性值
小结
- 以后大多数时候,会使用注解,而不是自定义注解
- 注解给谁看?
- 编译器
- 给解析器看
象方法获取配置的属性值
小结
- 以后大多数时候,会使用注解,而不是自定义注解
- 注解给谁看?
- 编译器
- 给解析器看
- 注解不是程序的一部分,可以理解为注解就是一个标签