`
ikeycn
  • 浏览: 146559 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

注解(Annotation)的定义及使用

JVM 
阅读更多
今天学习了java的Annotation部分,这里使用一个简单的小应用总结一下Annotation的定义及使用。
应用场景:假设有一个类Wait4Test中有几个方法需要测试,我们用自定义的注解TestMethod表示需要测试的方法;另外某个标注了TestMethod的方法可能因为一些原因,暂时不需要进行测试,我们用另外一个自定义的注解Ignore进行标注。在TestManager类中识别出所有需要进行测试的方法,并返回。
在Ignore标注时,为了理解忽略测试的原因,所以需要给它传递一些参数:
reason:字符串数组类型,用于表示忽略的原因
author:普通字符串类型,用于表示标注者姓名
date:用另一注解Date表示的自定义注解类型,表示时间

下面是此应用的代码实现:
先定义三个自定义注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestMethod {

}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Ignore {
	String[] reason();		//用于接收表示Ignore原因的参数,用数组表示
	String author();		//用于表示设置Ignore的作者
	Date date();			//用于接收设置Ignore注释的时间的参数,该参数调用了另外的一个注解Date
}

public @interface Date {

	int year();
	int month();
	int day();
}


在自定义注解时,使用了另外的两个注解:Target和Retention
Target注解用于设置此处定义的注解使用的位置,各种可取值在ElementType中定义
Retention注解用于设置此处定义的注解的保留期限,包括了三种不同的类型:
  Source:此注解仅在源码级别有效,编译时会被丢弃
  Class:保存在类文件中,在运行时会被丢弃
  Runtime:保存在类文件中,在运行时由JVM保留

下面的代码是需要进行标注的类,该类的方法定义时使用了我们上面定义的注解:

public class Wait4Test {
	@TestMethod
	public void testA() {

	}

	@TestMethod
	public void testB() {

	}
	
	/**
	 * Ignore注解中使用了多个参数,并且是不同类型的
	 * reason表示了设置数组类型的参数的方式
	 * author表示设置普通参数的方式
	 * date表示了设置另外一种注解表示的参数的方式
	 */
	@Ignore(reason = { "reason1", "reaon2" }, author = "yige", date = @Date(year = 2010, month = 10, day = 7))
	@TestMethod
	public void testC() {

	}
}


下面的代码用于根据注解判断哪些方法需要进行测试:
public class TestManager<T> {

	private Class<T> testClass;

	public TestManager(Class<T> testClass) {
		this.testClass = testClass;
	}
	public List<Method> loadTestMethods() {
		List<Method> testMethods = null;
		if (testClass != null) {
			testMethods = new ArrayList<Method>();
			for (Method method : testClass.getDeclaredMethods()) {
				/**
				 * 通过Method对象的isAnnotationPresent方法判断该方法是否被标注了某种注解
				 */
				if (method.isAnnotationPresent(TestMethod.class)
						&& !method.isAnnotationPresent(Ignore.class)) {
					testMethods.add(method);
				}
			}
		}
		return testMethods;
	}
} 
分享到:
评论

相关推荐

    Java自定义注解Annotation的使用

    ### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...

    自定义注解annotation及用法

    定义了注解后,可以在类、方法、变量等处使用。例如: ```java @Loggable(logLevel = Level.DEBUG) public class MyClass { @Loggable public void myMethod() { // ... } } ``` ### 4. 注解处理器 自定义...

    java 注解annotation的使用以及反射如何获取注解

    2. 注解定义:注解使用`@interface`关键字定义,并且通常包含一组成员,成员可以是基本类型、字符串、枚举、其他注解,或者是以上类型的数组。 二、注解的使用 在Java中,注解的使用主要包括以下几个步骤: 1. ...

    ssh2+oracle 全注解 annotation lib包

    使用注解可以极大地简化数据库连接和操作的代码,比如通过Spring框架的JdbcTemplate或JPA(Java Persistence API),可以使用注解来定义实体类、表映射关系,以及SQL查询等。 例如,`@Entity`注解标识一个类为...

    详解Android注解 Annotation

    定义注解使用`@interface`关键字,并可以包含元素(成员),元素可以有默认值。例如,创建一个用于标记测试方法的注解: ```java @interface MyTest { String description() default ""; } ``` 四、注解处理器 ...

    注解annotation的详细介绍

    除了这些内置的注解,Java还允许开发者自定义注解,通过定义注解接口,使用`@interface`关键字。自定义注解可以有自己的元素(element),元素可以是基本类型、字符串或其他注解。自定义注解的解析通常由编译器插件...

    Struts2之Annotation注解配置使用案例struts013

    在Struts2中,Annotation注解的引入为开发者提供了更加灵活和便捷的配置方式,使得无需在XML配置文件中进行繁琐的设置,可以直接在类或方法上通过注解来进行配置。本文将深入探讨Struts2中的Annotation配置,以及...

    java注解annotation.rar

    1. 定义注解:使用`@interface`关键字创建自定义注解,如`@MyAnnotation`。 2. 元注解:用于定义注解的行为,如`@Retention`、`@Target`、`@Documented`和`@Inherited`。 - `@Retention`:控制注解的生命周期,如`...

    Annotation注解的介绍和使用

    ### Annotation注解的深入解析与应用 #### 一、Annotation概览 ##### 1.1 何为元数据 元数据,在计算机科学中,是指用于描述数据的数据,它提供了关于数据本身的附加信息,有助于理解、解释和管理数据。在编程...

    Java 注解Annotation实例上手文档

    ### Java 注解Annotation实例上手文档 #### 一、引言与基础知识 Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架...

    spring的Annotation注解.

    ### Spring框架中的Annotation注解详解 #### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。...

    struts2利用注解annotation实现文件下载

    ### Struts2 使用注解(Annotation)实现文件下载 在Web开发中,文件上传与下载是常见的需求之一。Struts2框架提供了强大的功能来支持这一需求。本文将详细介绍如何使用Struts2框架结合注解(Annotation)的方式...

    Java用注解的方式定义一个Servlet

    用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。  像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...

    Java Annotation注解技术

    1. **Annotation类型**:定义了一个特定的注解,类似于接口,包含名称和多个注解元素。每个定义的注解类型需要有一个名字和至少一个注解元素。 2. **注解元素**:是注解定义中的成员,可以是基本类型、字符串、类...

    Java Annotation注解.doc

    此外,还可以使用Annotation Processing Tool (APT)在编译时处理注解,生成额外的源代码或类文件。 4. **保留策略**:注解可以在编译时、运行时或两者都被保留。保留策略通过`@Retention`注解指定,例如`...

    Android AOP注解Annotation详解(一)

    Android AOP 注解 Annotation 可以自定义,定义新的 Annotation 类型使用 @interface 关键字。自定义 Annotation 后,可以在程序中使用该 Annotation。使用 Annotation,非常类似于 public、final 等修饰符,通常,...

    JAVA注解(Annotation).doc

    Java注解,也称为Annotation,是Java编程语言中的一种特性,用于向编译器、JVM或工具提供元数据。元数据是关于数据的数据,它提供了额外的信息,但不直接影响程序的执行。注解在代码中以`@注解名`的形式出现,主要...

    Dwr3+Spring3 全注解 annotation 方式

    2. **配置Spring**:在Spring的配置文件中,我们需要启用注解驱动的配置,并为DWR的初始化bean提供定义。例如,使用`&lt;context:component-scan&gt;`标签扫描带有DWR注解的类。 3. **配置DWR**:在`dwr.xml`配置文件中,...

Global site tag (gtag.js) - Google Analytics