annotation java 参数,Java Annotation

注解的作用

1、wikipedia上对Annotation的概念介绍

Annotation,是Java语言中的一种特殊的元数据语法,可以被添加到Java代码中。类,方法,变量,参数,包都可以被标注。与Javadoc的标签不同,注解是可以被反射的,因为他们被编译器生成嵌入在编译后文件,并保留在虚拟机中以便在运行时被索引。

2、Sun网站上写的

JDK5引入了Metedata(元数据)很容易的就能够调用Annotations.Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误。An annotation 对代码的执行没有什么影响。Annotations使用@annotation的形式应用于代码:类(class),属性(field),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。

meta-annotation(元注解)介绍

元注解是用来描述注解的注解,它不能直接应用于普通类的类、变量、方法、参数、构造方法、本地变量、注解类型、包上。

Java内置的元注解

Target

用来修饰其它注解,用来标明其它注解应用在什么地方。

Documented

用来修饰其它注解,用来标明生成API说明时,其它注解信息是否输出。

Retention

指明被该注解注解的注解被保留的时间。有三个选项:SOURCE(注解将在编译时被丢弃)、CLASS(注解信息保留到编译后的class文件中,在VM中运行时注解信息会消失)、RUNTIME(编译后的class文件中会存在注解信息,且在VM运行时仍然保留。因此,该类注解可以用反射的方式进行读取)

创建自定义注解与解析注解流程

首先,我们新建一个注解类

package com.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public @interface Description {

String author() default "william"; //定义"作者"参数

String date(); //定义"日期"参数

String version();// 文件版本

}

我们自定义的注解Description是用来修饰类的,且该注解信息一致保持到VM运行期间。

接下来,我们新建一个使用该注解的类。因为上边定义的注解是要放在类上的,所以为了简单起见,我定义一个没有任何方法与属性的类

package com.annotation;

@Description(author = "Eisenhower", date = "20130718",version="2.1")

public class AnnotationTest {

}

下边我们开始解析注解信息

解析注解是使用的Java反射功能,代码如下:

9367387

控制台输出如下:

desc.author:Eisenhower

desc.date:20130718

desc.version:2.1

还有一些情况,感兴趣的童鞋们可以去测试一下,如果我把自定义注解@Retention的值设置为RetentionPolicy.SOURCE或RetentionPolicy.CLASS。那么运行测试的时候,都将会显示:没有在AnnotationTest上使用注解!。这主要是因为该注解信息并没有带到VM运行时内存。

当@Retention的值设置为RetentionPolicy.SOURCE时,使用反编译工具查看AnnotationTest类的源码,里边是没有注解信息的。

使用自定义注解的地方很多,常见于一些主流应用框架中,如springMVC、orm框架hibernate与mybatis。

使用注解可以使系统的配置更加灵活,但同时也增加了结构的复杂性。

一些需要注意的地方:

1、注解中的方法不能定义参数。

2、注解当中定义的方法不能定义抛出异常。

为方便与大家交流、分享开发经验,欢迎大家加入我建的QQ技术交流群:111412248。注意,加入本群需要在开发上有一定的深度与广度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值