Java 注解知识点

在Java中注解包含两部分:注解的定义和注解处理器。本篇只总结部分知识点,某些知识点不在其中,如需请自行阅读相关资料。

1、注解的定义

我们通过@interface定义注解

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface AnnotationName(){

public int value() default  -1;

}

通过@Target、@Retention等元注解,对自定义的注解进行注解。

a)元注解

元注解专职负责注解其他的注解,也就是所谓的注解的注解。元注解包括如下四种:@Target、@Retention、@Document、@Inherited。

@Target:表示该注解可以用于什么地方,可以指定其中一个或者以逗号分隔的形式指定多个值,如果想将注解应用于所有的ElementType,那么可以省略该元注解,不过这种情况并不常见。有如下几种:

CONSTRUCTOR:构造器的声明

FIELD:域声明

LOCAL_VARIABLE:局部变量声明

METHOD:方法的声明

PACKAGE:包的声明

PARAMETER:参数声明

TYPE:类、接口(包括注解类型)或enum声明

@Retention:表示需要在什么级别保存注解信息。有如下几种:

SOURCE:注解将被编译器丢弃;注解信息存于源文件中。

CLASS:注解在class文件中可用,但会被JVM丢弃。

RUNTIME:VM将在运行期也保留注解,因此可以通过反射机制读取注解的信息。

@Document:将此注解包含在JavaDoc中。

@Inherited:允许子类继承父类中的注解。

在多数的情况下,程序员主要是定义自己的注解,并编写自己的处理器来处理它们。

b)注解处理器

编写注解处理器有两种方式:

i)利用反射几种;

ii)利用Java提供的APT;

c)注解元素支持的数据类型

*所有的基本类型;

*String;

*Class;

*enum;

*Annotation;

*以上类型的数组;

如果你使用了其他类型,编译器就会报错。我们看到Annotation也是注解元素支持的数据类型,这说明注解是可以嵌套的。

d)注解元素的默认值限制

首先,必须是确定的值;其次对于非基本类型的元素,不能以null作为其值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值