`

自定义 Java Annotation

    博客分类:
  • java
阅读更多
1.举例
关键字@interface 定义一个注解标记。注解也将会编译成class文件。以下定义的为方法注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value=ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodAnnotation {
	public String name();  
    public int time() default 0;  
}


定义一个类,方法使用注解。
public class TestCase {
	
	public void method(){
		System.out.println("method");
	}
	@MethodAnnotation(name="case1", time=10)
	 public void method1(){  
	        System.out.println("method1");  
	    } 
	@MethodAnnotation(name="case2", time=20)
	public void method2(){
		System.out.println("method2");
	}
}


编写注解处理器:使用反射来遍历方法。
public class TestCaseTracker {
	 public static void printTestCase(Class<?> bindClass){  
	        assert bindClass != null;  
	        for (Method method : bindClass.getDeclaredMethods()){  
	            MethodAnnotation bind = method.getAnnotation(MethodAnnotation.class);  
	            if (bind == null) continue; // Not found annotation.  
	  
	            System.out.println(String.format("Found [%s] Test Case : %s-%d", method  
	                    .getName(), bind.name(), bind.time()));  
	        }  
	    }  
	public static void main(String[] args) {
		TestCaseTracker.printTestCase(TestCase.class); 
	}

}


2.元注解

在J2SE中内置了三种常用标准注解(Override, Deprecated, SuppressWarnings)以及四种元注解:
     @Target:  表示该注解可以用于什么地方。可用ElementType枚举类型主要有:
               TYPE : 类、接口或enum声明
               FIELD: 域(属性)声明
               METHOD: 方法声明
               PARAMETER: 参数声明
               CONSTRUCTOR: 构造方法声明
               LOCAL_VARIABLE:局部变量声明
               ANNOTATION_TYPE:注释类型声明
               PACKAGE: 包声明
     @Retention:  表示需要在什么级别保存该注解信息。可用RetentionPolicy枚举类型主要有:
              SOURCE: 注解将被编译器丢弃。
              CLASS  :  注解在class文件中可能。但会被VM丢弃。
              RUNTIME: VM将在运行时也保存注解(如果需要通过反射读取注解,则使用该值)。
     @Documented:  将此注解包含在Javadoc中。
     @Inherited:  允许子类继承父类中的注解。

3.使用技巧
1.如果希望定义的注解用于多种  ElementType 的话可以写成:
import static java.lang.annotation.ElementType  
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) 


2.在声明注解中的方法时可通过 default 来指定默认值。
3.在声明注解中的方法返回类型可结合泛型使用,如:
    Class<? extends Payload>[] payload() default {};  


4.可在注解类中定义嵌套注解,如:
    import static java.lang.annotation.ElementType  
      
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })  
    @Retention(RUNTIME)  
    @Documented  
    public @interface NotNull {  
        String message() default "{javax.validation.constraints.NotNull.message}";  
      
        @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })  
        @Retention(RUNTIME)  
        @Documented  
        @interface List {  
            NotNull[] value();  
        }  
    }   

@NotNull.List(value = { @NotNull })  
protected List<?> list; 

5.在JASE中提供了很少的内置注解,不过JBoss提供了一个 validation-api 的类库,提供常用验证注解。有兴趣的朋友可以下载看看,其 maven 依赖为:

    <dependency>  
      <groupId>javax.validation</groupId>  
      <artifactId>validation-api</artifactId>  
      <version>1.0</version>  
    </dependency>  
分享到:
评论

相关推荐

    Java自定义注解Annotation的使用

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

    自定义Annotation例子

    总结起来,自定义Annotation是Java中强大的工具,可以帮助我们编写更加可读、可维护的代码,并且可以与编译器和运行时环境进行交互。通过定义自己的注解,我们可以实现代码的元数据化,从而实现自动化、验证、监控等...

    Java基础复习笔记12Java自定义注解Annotation的使用

    Java自定义注解(Annotation)是Java编程语言中的一个重要特性,自JDK1.5引入以来,它极大地简化了代码的管理和维护。注解提供了一种元数据的方式,允许程序员在源代码中嵌入额外的信息,这些信息可以被编译器、...

    自定义注解annotation及用法

    在Java编程语言中,注解(Annotation)是一种元数据,它提供了向编译器、工具或运行时系统提供额外信息的方式。自定义注解允许开发者创建自己的标记来满足特定需求,比如代码生成、验证、持久化等。本文将深入探讨...

    JDK5.0 Java Annotation 介绍(ppt)

    1. **定义和使用**:从 JDK5.0 开始,Java 提供了定义和使用自定义 Annotation 的能力。这包括定义 Annotation 类型的语法、声明 Annotation 的语法,以及读取 Annotation 的 API。Annotation 不直接改变代码的执行...

    2个案例 自定义annotation进行查询对象封装 itext 打印案例

    在IT行业中,自定义注解(Annotation)是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,增强了代码的可读性和可维护性。这些元数据可以被编译器或运行时环境用来执行特定的任务,例如代码分析、...

    JavaAnnotation手册[借鉴].pdf

    虽然Java虚拟机(JVM)本身忽略Annotation,但通过特定的工具,如Java编译器或自定义的Annotation处理器,可以处理和利用这些信息。 二、Annotation的定义与语法 1. Annotation概念:它以类似修饰符的形式出现在...

    java annotation demo

    通过自定义注解和处理器,开发者可以扩展Java平台的功能,实现更灵活和模块化的代码设计。 总结来说,Java注解是增强代码可读性、简化代码维护和提高开发效率的重要工具。通过创建和使用注解,我们可以将元数据嵌入...

    Java Annotation手册

    《Java Annotation手册》 在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响...

    Java annotation (JDK5)

    Java的`javax.annotation.processing.Processor`接口定义了注解处理器的规范。 5. 使用注解 注解可以应用于类、方法、字段、参数、构造函数、包等不同级别。例如: ```java @MyAnnotation("Hello, World!") ...

    重难点之JavaAnnotation手册.pdf

    在《Java Annotation入门》之后的这篇《重难点之JavaAnnotation手册》中,作者深入探讨了Annotation的概念、定义以及其在Java开发中的应用。 一、Annotation是什么? Annotation是一种在代码中添加的特殊注解,用于...

    JavaAnnotation手册.pdf

    从Java 6开始,自定义Annotation的使用也得到了增强,允许开发者创建自己的Annotation类型。 2. 自定义Annotation:自定义Annotation需要定义一个接口,这个接口就是Annotation类型。通过定义成员变量(通常带有...

    JAVA Annotation学习

    通过上述示例中的JavaAnnotation压缩包,你可能包含了注解的使用示例、源码以及相关的博客文章。源码可以帮助你理解注解的实际应用,而博客文章可能深入解释了注解的工作原理和最佳实践。学习这些材料,将有助于你...

    自定义annotationProcessor

    通过以上步骤,你的自定义`annotationProcessor`将在编译时自动运行,根据你在源代码中使用的注解生成相应的Java类。这种编译时代码生成的能力极大地增强了Java的灵活性和可扩展性,是现代Java开发中的重要工具之一...

    Java Annotation注解.doc

    Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...

    Java Annotation注解技术

    Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...

    实战篇:设计自己的Annotation

    在设计自定义的Annotation之前,我们首先需要了解Java自带的三种基本Annotation类型: 1. **`@Override`**:此注解只能应用于方法之上,表明该方法是重写(覆盖)其父类中的同名方法。它帮助编译器进行检查,确保...

    Java Annotation详解

    Java 注解(Annotation)是 Java 语言的一种元数据机制,它允许程序员在源代码中嵌入额外的信息。这些信息可以被编译器、IDE、JVM 或其他工具使用,以增强代码的功能,简化开发,提高可维护性。注解并不直接影响代码...

    Java Annotation的讲解和例子

    Java 注解(Annotation)是Java语言的一个重要特性,它为代码提供元数据,即关于代码的信息,但这些信息不直接影响程序的运行。注解在Java中主要用于编译器检查、运行时处理、框架生成元数据等场景。本篇将深入探讨...

    java之Annotation及其应用

    Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...

Global site tag (gtag.js) - Google Analytics