java中关于《注解》的详解

1. 注释和注解的区别?存在的作用是什么?
 很多人会把注释和注解搞混淆,但是两者却有着很大的区别。
 关于注释,我们肯定会比较熟悉,在学习编程入门的时候,我们就接触到注释。简单讲,注释是为了让程序员能够更加明了,是对一种或一些代码的进行备注,告诉程序员某种信息,比如这段代码的功能。
 关于注解,虚拟机能够读解的信息,是给编译器、解释器、JVM使用某些信息的。在java中的表现形式为:@XXX。

2. JDK自带的三个最基本的注解。
 注解技术是java5.0版本出现的新特性。
<1>@Override
 当我们用软件开发工具进行继承或实现的时候,常常会在方法上出现这个注解,我们也很清楚,这个注解是告诉jvm这是一个重写方法。举个栗子:我们都知道hashcode()方法是Object中的方法。我们创建的每个类文件都是直接或间接地继承Object,我们如果要重写hashcode( )方法,当然没有问题,但是如果我们如果在一个其父类没有的方法上加上@Override,就会报错,如下图:报错栗子
 注意:在JDK5.0和6.0中@Override存在区别。
JDK5.0中,@Override只能描述继承中的重写。
JDK6.0中,@Override不仅可以描述继承中的重写,还能描述实现中的重写。

<2>@Deprecated
 这个注解是用于声明该方法已经过时。因为在java发展中,API也在跟着不断地发展,会出现原来的方法具有安全隐患或者效率太低被新的方法所替代的情况,这时候就需要对原来旧的方法进行方法过时声明。
<3>@SuppressWarnings(带参数)
 在用MyEclipse或其他相似的软件开发的时候,常常会因为声明变量未被使用、集合为声明泛型等出现警告。而这个注解就是去除程序中的警告信息的。

SuppressWranings的参数消除哪类警告
unused变量未被使用
deprecation使用了不建议使用的类或者方法(比如过时的方法)
unchecked未检查的转换时的警告(比如集合未定义泛型)
fallthrough当switch程序中,一个case块中没有break,直接执行下一个case块
path当类文件或路径不存在的时候出现的警告
serial可序列化的类上缺少 serialVsersionUID定义时出现的警告
finally任何finally子句不能正常完成时的警告
rawtypes传参数时也要传带有泛型的参数
all出现的所有警告

 
3. 注解本质
 @interface XXX就是声明了一个注解。但其本质上就是一个继承了Annotation接口的接口,所有的注解都得实现这个接口,和Object有点类似,但是Object类不是接口。并且不能手动实现这个接口。

4.注解中的成员分析
 注解的成员组成:
属性(可以有,也可以没有),但是在注解中属性不称为属性,而是常量。一般在注解中基本上很少会被用到。
方法,在注解中,我们成方法为注解的属性(下文说的属性就是指这个方法)。

5. 注解属性的类型
 所谓的注解属性类型,就行当于我们探讨一般方法的返回值类型一样。
<1>8种基本类型。(byte、short、int、long、float、double、char、boolean)
<2>String类型。
<3>enum(枚举)类型。
<4>Class类型。
<5>Annotation
<6>以上类型的一维数组。
6. 注解属性赋值问题
 我们在前面使用中发现,使用一些注解需要进行赋值操作(比如@SuppressWarnings(unused)),而有些不需要赋值,如果需要赋值,我们该如何进行赋值?
<1>默认值赋值
  即在写注释属性的时候,已经为该属性附上默认值了。比如:int demo( ) default 10;
默认值和属性的类型应该保持一致。

<2>注解中只需要赋单值的情况
 @XXX(属性名称=值)为该情况的赋值方式。并且单这个属性名称为value的时候,可以省略属性名称,使用@XXX(值)的方式。

<3>注解中要给赋值的是数组
 如果要赋值的数组只需要赋一个值,比如@XXX(a={5}),可以用@XXX(a=5)代替。
 如果要进行赋多值操作,比如@XXX(a={2,5,0}),如果属性名称为value,便可以用@XXX({2,5,0})来替代。
再深入注解知识:元注解和自定义注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值