Java基础知识7-注解
注解概述
什么是注解?
①注解是JDK1.5才引入的。
②注解可以标注在 类上,属性上,方法上 等。
==③注解可以做到在不改变代码逻辑的前提下在代码中嵌入补充信息。==
注解与注释
①注释:给程序员看的,编译器编译时会忽略注释。
②注解:给编译器看的,或给其它程序看的,程序根据有没有这个注解来决定不同的处理方式。
注解的重要性
①框架是如何实现的:框架 = 反射 + 注解 + 设计模式。
Java预置注解
①@Deprecated
用来标记过时的元素,在编译阶段遇到这个注解时会发出提醒警告,告诉开发者正在调用一个过时的元素比如过时的类、过时的方法、过时的属性等。
forRemoval属性值表示如果是true就是已移除
②@Override
修饰实例方法,则该方法必须是个重写方法,否则就会编译失败。
③@SuppressWarnings(抑制警告的注解):在实际开发中,建议尽量不要忽略警告,而是真正的去解决警告。
1 | :抑制未使用泛型的警告 |
④@FunctionalInterface “函数式接口”的注解
**==“函数式接口”的注解,这个是 JDK1.8 版本引入的新特性。==**:函数式接口 有且只能存在一个抽象方法
==这个注解是专门用来标注接口的==
使用@FunctionalInterface标注的接口,则该接口就有且只能存在一个抽象方法,否则就会发生编译错误。
(注意:接口中的默认方法或静态方法可以有多个。)
自定义注解Annotation
注解的属性是以方法这种签名实现的
自定义注解(注解属于引用数据类型)
①使用 @interface 来定义注解。
②默认情况下注解可以出现在类上、方法上、属性上、构造方法上、方法参数上等……
③所有自定义的注解,它的父类是:java.lang.annotation.Annotation
1 | //@Retention(value= RetentionPolicy.SOURCE) // @MyAnnotation 注解保留在源码中。 |
1 |
|
注解也可以定义属性
①注解也可以定义属性,不过属性定义时,属性名后面必须加一个小括号。
②属性的类型只能是:
byte,short,int,long,float,double,boolean,char
String、Class、枚举类型、注解类型
以上所有类型的一维数组形式
1 | /** |
1 | // 语法规则:如果这个注解中有属性,那么使用的时候,必须给属性赋值。没有赋值则报错。 |
注解的使用
①注解在使用时必须给属性赋值,除非你使用了default关键字为属性指定了默认值。
②如果属性只有一个,并且属性名是value时,使用注解时value可以省略不写。
③如果属性是一个数组,使用注解时,数组值只有一个,数组的大括号是可以省略的。
元注解
①用来标注注解的注解叫做元注解。(也是JDK内置的注解。)
②常用的元注解:
1 | @Retention:设置注解的保持性 |
@Retention
①Retention英文意思有保留、保持的意思,它表示注解存在阶段是保留在源代码(编译期),字节码(类加载)或者运行时(JVM中运行)。
②在@Retention注解中使用枚举RetentionPolicy来表示注解保留时期。
1 | :注解仅存在于源代码中,在字节码文件中不包含。 |