详谈java注解

牵肠挂肚的算法考试也考完了,现在也要好好学java了。好像se部分的内容好像还是不是那么熟悉,好像后面学spring框架的时候需要经常用到注解,所以今天抽空写一下注解的知识点。
这里参考的内容有:廖雪锋的java教程,尚硅谷的java基础。

什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。注释会被编译器直接忽略,注解则可以被编译器打包进入class文件,因此,注解是一种用作标注的“元数据”。

①:jdk5.0 新增的功能
如果框架中没有注解的话,那么就需要自己去设置配置文件了
②:Annotation 其实就是代码里的特殊标记,
这些标记可以在编译, 类加载, 运行时被读取,
并执行相应的处理。

在这里我们举例一些常用的注解,就是算是无意中用到的,或者无意中看到的注解:

@Override: 限定重写父类方法, 该注解只能用于方法
@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为
所修饰的结构危险或存在更好的选择
@SuppressWarnings: 抑制编译器警告.比如变量未曾使用过

  • ③:在JavaSE中,注解的使用目的比较简单,例如标记过时的功能, 忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。

关于注解呢?廖大认为分成三类,其实我对类别的划分其实倒不是特别关心
第一类是由编译器使用的注解: @Override,@Deprecated, @SuppressWarnings
如果理解呢?这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了。当我们去反编译的时候,我们却看不到原来的注解了。(好像和前面的定义有一点矛盾)

第二类是由工具处理.class文件使用的注解,比如有些工具会在加载class的时候,对class做动态修改,实现一些特殊的功能。这类注解会被编译进入.class文件,但加载结束后并不会存在于内存中。这类注解只被一些底层库使用,一般我们不必自己处理。

第三类是在程序运行期能够读取的注解,它们在加载后一直存在于JVM中,这也是最常用的注解。例如,一个配置@PostConstruct的方法会在调用构造方法后自动被调用(这是Java代码读取该注解实现的功能,JVM并不会识别该注解)。

那么除了在系统调用的情况下,如何自己去写一个注解呢?其实和写函数差不多

step1:@interface去进行注解的创建
step2:内部定义成员,通常使用value表示
step3:可以指定成员的默认值,使用default去进行定义
step4:如果自定义注解没有成员,表示是一个标识的注解

定义一个注解时,还可以定义配置参数。配置参数可以包括:
所有基本类型;
String;
枚举类型;
基本类型、String、Class以及枚举的数组。
注解的配置参数可以有默认值,缺少某个配置参数时将使用默认值。

在这里插入图片描述
这里接受单个变量,如果想解说多个变量,那就要开成数组。jdk的源码就开成数组的。还要提及一点。上面的override后面没有参数,其实就是写成default,或者定义接口,里面的内容不用去填写
在这里插入图片描述

关于jdk提供的四种元注解:
元注解:对现有的注解去进行解释说明的注解
元注解分成四个:Retention,Target,Documented,Inherited
使用起来最频繁的是前两个

Retention:指定所修饰的Annotation的生命周期:
SOURCE/CLASS(默认行为)/RUNTIME
Target:用于指定修饰的Annotation,能用于修饰哪些程序元素(比如修饰类,构造器)
Documented:表示做修饰的注解在被javadoc解析的时候保留下来比如,在使用date的时候,虽然已经过时了,还是保留了就是因documented,被包含进来了
Inherited:被修饰的annotation将具有继承性

其实我说这么多,仅仅还是一个学习者,四个元注解里面还是里面的参数是不同的,可以结合一下廖大的教程去看一下。

廖雪峰的注解

注解讲了这么多,其实注解和方式是结合在一起的。下一篇我会在讲一讲反射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值