注解相关笔记

注解:

注解(Annotation)可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明。

 

注解(Annotation)的属性,用无参数无语句方法的形式来声明。其方法名和返回值定义了该成员的名字和类型,我们称为配置参数。方法的返回类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型或上述12种类型的数组

 

 

自定义注解:

1、用@interface表示注解。

     @interface MyAnnotation {}

2、定义属性:如果只有一个属性,参数名用“value”。

3、可以初始化属性:在属性定义后用default关键字可以给属性初始化默认值。

4、定义其元注解:一般常用的为@Retention(RetentionPolicy.RUNTIME)@Target。

@Documented,@Inherited和@Repeatable用的不多。

5、使用自定义注解:

使用时在注解前加@;

如果该注解有属性,且属性初始化过有默认值,则在使用时可以不用再对属性赋值;若没有初始化过,则在使用注解时要在后面显式初始化一下,给属性赋值。若此时只有一个属性value,可以省略“value=”。若属性为数组且只有一个元素,可以省略{}。

如果该注解没有属性,则该注解仅起到标识作用,使用时不用赋值。

 

▲自定义注解自动继承java.lang.annotation.Annotation接口。

▲自定义注解必须配上注解的信息处理流程才有意义。

 

元注解:

作用:对其他的注解进行解释说明(不要用到方法,类等地方)

1、@Retention: 用于指定该注解的生命周期,@Rentention包含一个RetentionPolicy枚举类型的成员变量value,使用@Rentention时必须为该value指定值:

RetentionPolicy.SOURCE:在源文件中有效(即源文件保留),在编译过程中被丢弃。

RetentionPolicy.CLASS:在class文件中有效(即class保留),在编译后的class文件中保留,当运行Java 程序时, JVM 不会保留注解。这是Retention注解的value默认初始化值

RetentionPolicy.RUNTIME:在运行时有效(即运行时保留),当行运行Java 序程序时, JVM 会保留注释。此时程序可以通过反射获取注解

2、@Target:用于指定被修饰的注解能用于修饰哪些程序元素。@Target包含一个ElementType枚举类型数组的成员变量value,使用时也必须为该value数组指定值:

3、@Documented:用于指定所修饰的注解会被javadoc工具提取成文档时保留下来,默认情况下,javadoc是不包括注解的。它没有定义属性。

4、@Inherited:被它修饰的注解将具有继承性。注解具有继承性的意思是如果某个类使用了该注解, 则其子类将自动具有该注解。

5、@Repeatable:被它修饰的注解可以对一个程序元素重复使用。对一个注解如MyAnnotation声明@Reapeatable时,其value值为(MyAnnotations.class),并且需要额外定义一个属性为MyAnnotation[]类型的注解MyAnnotations。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值