凯哥学堂

搜索

凯哥学堂

注解 [复制链接]

查看: 14192|回复: 0
打印 上一主题 下一主题

27

主题

27

帖子

761

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
761
QQ
跳转到指定楼层
楼主
发表于 2017-8-18 15:18:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注解简介:

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、属性、方法、局部变量、方法参数等的前面。

注解主要是用来配置信息的,例如文档注释也是注解的一种,要注意的一点是注解并不是代码仅仅是配置信息,变动比较大的信息就需要作为配置信息,源码注解只会在代码上出现,编译后则不会出现。所以注解有一个缺点就是需要【学Java,到凯哥学堂kaige123.com】修改配置信息的时候,得找到那个类的的源码进行修改。

在没有注解的时候配置信息一般都是写在文本文件或者XML文件上,因为这种方式配置信息与代码分离了,所以需要查看的时候不太直观、方便,优点就是可以直接修改配置信息,不需要去找源码类。注解优点则是方便查看,能够与代码对应查看起来没那么费力,比较直观,所以一般大多数开发人员还是会选择使用注解。

Java自带注解:

1.@SuppressWarnings注解:

这个注解是用来去除代码警告的,是忽略性注解。写在方法上就去除方法的警告,写在构造器上就去除构造器的警告,写在类上去去除所有警告等等,这个注解可以写在属性、类、方法、参数、构造器、局部变量上。

没写@SuppressWarnings注解的话:

在方法上写@SuppressWarnings注解:

在类上写了这个注解的话会去除这个类里的所有警告:

2.@Deprecated注解: 这个注解大多数情况下是用来表示一个方法是过时方法的,一个方法上写了这个注解方法名就会显示一条横线,但是这个注解可以写在属性、类、方法、参数、构造器、包、局部变量上: 例如我写在方法上,这个方法就会显示一条横线:

3.@Override注解:

这个注解只能写在方法上,是用来表示这个方法是重写父类的:

以上就是常用的Java自带的注解。

创建注解类: 在创建工程或类的菜单栏中有一个选项:Annotation,这个选项是用来创建注解类的:

元注解是用于声明注解类的一些特性的,例如这个注解能写在什么地方、在哪个区域有效等等,先介绍一下几个常用元注解的作用: 1.@Target用于声明注解能写在什么地方,这个注解里有几个参数:

ElementType.FIELD: 能写在属性上ElementType.TYPE: 能写在类上ElementType.CONSTRUCTOR: 能写在构造器上ElementType.METHOD: 能写在方法上ElementType.ANNOTATION_TYPE: 能写在注解上ElementType.PARAMETER: 能写在参数上ElementType.LOCAL_VARIABLE: 能写在局部变量中

2.@Retention用于声明注解的有效区域,这个注解里也有几个参数:

CLASS: 在字节码也就是Class文件中有效,但是一旦加载后就无效了SOURCE: 只在源码中有效,字节码中没有RUNTIME: 代码在运行时就有效

3.@Inherited用于声明此注解在子类中有效。

4.@Documented用于声明此注解在javadoc文档中奏效。 代码示例:

如果声明在注解类上的属性没有写默认值的话,在写这个注解时就会强制要求写一个值,不然就会报错,不想它报错就需要用default关键字写一个默认值上去:

使用反射机制对注解进行访问: isAnnotationPresent方法可以判断属性、方法、构造器、类是否写有某个注解:

代码示例:

运行结果:

getAnnotations方法可以使用属性、方法、构造器、类的反射机制对象调用,得到所有的注解,返回的是Annotation数组对象: 代码示例:

运行结果:

getAnnotation方法可以获得指定的注解: 代码示例:

运行结果:

使用注解配置信息: 在注解里配置信息只需要根据注解类里申请的属性在括号里填写相对应的值即可,可以填写其中一个属性,也可以全部填写,如果没有默认值的属性则必须填写。

代码示例:

运行结果:


回复

使用道具 举报