目录:
1.注解概述
2.注解的作用分析
3.JDK中预定义的一些注解
4.自定义注解
5.元注解
6.解析注解
1.注解概述
Java注解是一系列元数据,它提供数据用来解释程序代码,它是JDK1.5之后版本引入的新的特性,与类,接口,枚举是同一个层次,它可以声明在包,类,字段,方法,局部变量,方法参数等的前面,用来说明程序的,
注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响
2.注解的作用分析
简单了解注解的作用:
注解作用:
1.编译检查:通过代码里标识的注解据让编译器实现基本的检查
2.编写文档:通过代码里标识的注解生成文档【doc文档】
3.代码分析:通过代码标识的注解对代码进行分析【使用反射】
1.编译检查
就比如我们接触过的Override注解:
Override注解作用是检查所注解方法是否重写了父类的方法,如果不是注解的正确使用,编译就不会通过,这就是所谓的注解检查:
2.编写文档
就是我们在文档注释上加一点注解:
package annotation;
/**
* 计算两数的和
* @author itcat
* @version 1.0
* @since 1.5
*/
public class AnnoDemo1 {
/**
* 计算两数的和
* @param a 整数
* @param b 整数
*/
public int add(int a,int b)
{
return a+b;
}
}
然后如果我们把上边代码编写成文档那么注解的内容将会被翻译成文档中相应的内容
ps:博主不知道为啥不能生成文档所以不能演示生成文档后,文档里边的内容,mmp这文档肯定看不起我
当然其实只要了解到它会在生成文档中会被翻译成对应信息就行
3.代码分析:通过代码标识的注解对代码进行分析【使用反射】,在下面详细说明
3.JDK预定义的注解
1.@Override:检查被注解的方法是否是继承自父类的
2.@Deprecated:将该注解标注的内容已经过时
3.@Suppresswarnings:压制警告
1.@Override:这个不多讲,上边的演示有
2.@Deprecated
例子:
我们可以看到当我们选择方法时,show1上是有一个删除线的,而show2是没有的,这就是本注解的作用,虽然注解内容已经过时但是不影响我们对它的调用,java中标注这个注解说明该方法已经存在更好的方法进行替换
3.@Suppresswarnings
例子:
乍一看好像没啥啊,但是可以把鼠标放在红色叹号下边的黄色横杠上,就会出现提示信息,上图就有一个
Method 'show2()' is never used
这个警告信息,如果不想要这些警告,那么就可以在你不想要的警告的方法上添加此注解,就会屏蔽。这个注解一般加在类上边的部分,这样就能屏蔽全部的警告
注意使用此注解一般需要加一个参数all,正确格式为
@Suppresswarnings("all")
4.自定义注解
1.我们看一个系统自定义注解Override的注解格式分析:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
格式:
1.元注解:下边会讲
2.public @interface 注解名称{}:一个类似于普通接口的接口,作用和使用规则和普通方法一样
注解本质:
所有注解都会继承得的公共接口,系统默认为你继承
java.lang.annotation.Annotation
接口
注解属性:
就是注解的接口里边可以定义的
成员方法
要求:
1.属性的返回值类型:
(1)基本数据类型
(2)String
(3)注解
(4)以上类型的数组
2.定义属性后:
(1)使用时需要给属性赋值
(2)如果定义属性时使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值
(3)数组赋值的时候使用{}包裹,如果数组只有一个元素{}可以省略,如果只有一个属性需要赋值,并且属性的名称是value那么赋值时value可以直接省略
为了方便理解举个例子(对属性返回值类型的要求):
很明显void不合适(编译不通过),注意我们把
注解里边的方法叫做属性