首页 > 编程 > Java > 正文

java注解一

2019-11-06 06:19:09
字体:
来源:转载
供稿:网友

一、注解的分类

1、java SE5内置了三种内建注解

@Override,表示当前的方法定义将覆盖超类中的方法。@DePRecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。@SuppressWarnings,关闭不当编译器警告信息。

2、Java还提供了4种元注解

元注解 解释
@Target 表示该注解可以用于什么地方,可能的ElementType参数有:CONSTRUCTOR:构造器的声明FIELD:域声明(包括enum实例)LOCAL_VARIABLE:局部变量声明METHOD:方法声明PACKAGE:包声明PARAMETER:参数声明TYPE:类、接口(包括注解类型)或enum声明
@Retention 表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:SOURCE:注解将被编译器丢弃CLASS:注解在class文件中可用,但会被VM丢弃RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。
@Document 将注解包含在Javadoc中
@Inherited 允许子类继承父类中的注解

二、注解的分类

注解分为两类,一类是元注解,另外一类是普通注解。 所谓元注解就是修饰注解的注解。 拿到一个注解,如何知道它是否是元注解呢?需要看它的元注解(无论是元注解还是普通注解都是有元注解的),如果看到这样的元注解:@Target(ElementType.ANNOTATION_TYPE),那么此时这个注解一定是元注解。

三、注解的语法与定义形式

(1)以@interface关键字定义 (2)注解包含成员,成员以无参数的方法的形式被声明。其方法名和返回值定义了该成员的名字和类型。 (3)成员赋值是通过@Annotation(name=value)的形式。 (4)注解需要标明注解的生命周期,注解的修饰目标等信息,这些信息是通过元注解实现。

例如:

@Retention(value = RetentionPolicy.RUNTIME)@Target(value = { ElementType.ANNOTATION_TYPE } )public @interface Target{ ElementType[] value();}

源码分析如下: 第一:元注解@Retention,成员value的值为RetentionPolicy.RUNTIME。 第二:元注解@Target,成员value是个数组,用{}形式赋值,值为ElementType.ANNOTATION_TYPE 第三:成员名称为value,类型为ElementType[] 另外,需要注意一下,如果成员名称是value,在赋值过程中可以简写。如果成员类型为数组,但是只赋值一个元素,则也可以简写。如上面的简写形式为: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表