`

Java中的注解机制--比较详细

    博客分类:
  • JAVA
 
阅读更多
http://blog.csdn.net/a243932069/article/details/8985076


Java中的注解机制

注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后

某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据)。

    注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种

注解,定义在java.lang包中。

      @Override 表示当前方法是覆盖父类的方法。

      @Deprecated 表示当前元素是不赞成使用的。

      @SuppressWarnings 表示关闭一些不当的编译器警告信息。

下面是一个定义注解的实例

Java代码 
package Test_annotation;    
   
import java.lang.annotation.Documented;    
import java.lang.annotation.Inherited;    
import java.lang.annotation.Retention;    
import java.lang.annotation.Target;    
import java.lang.annotation.ElementType;    
import java.lang.annotation.RetentionPolicy;    
   
/*   
* 元注解@Target,@Retention,@Documented,@Inherited   
*    
*     @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:   
*         ElemenetType.CONSTRUCTOR 构造器声明   
*         ElemenetType.FIELD 域声明(包括 enum 实例)   
*         ElemenetType.LOCAL_VARIABLE 局部变量声明   
*         ElemenetType.METHOD 方法声明   
*         ElemenetType.PACKAGE 包声明   
*         ElemenetType.PARAMETER 参数声明   
*         ElemenetType.TYPE 类,接口(包括注解类型)或enum声明   
*            
*     @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:   
*         RetentionPolicy.SOURCE 注解将被编译器丢弃   
*         RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃   
*         RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。   
*            
*     @Documented 将此注解包含在 javadoc 中   
*        
*     @Inherited 允许子类继承父类中的注解   
*      
*/   
@Target(ElementType.METHOD)    
@Retention(RetentionPolicy.RUNTIME)    
@Documented   
@Inherited   
/*   
* 定义注解 Test   
* 注解中含有两个元素 id 和 description   
* description 元素 有默认值 "no description"   
*/   
public @interface Test {    
    public int id();    
    public String description() default "no description";    
}   
package Test_annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;

/*
* 元注解@Target,@Retention,@Documented,@Inherited
* 
*     @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:
*         ElemenetType.CONSTRUCTOR 构造器声明
*         ElemenetType.FIELD 域声明(包括 enum 实例)
*         ElemenetType.LOCAL_VARIABLE 局部变量声明
*         ElemenetType.METHOD 方法声明
*         ElemenetType.PACKAGE 包声明
*         ElemenetType.PARAMETER 参数声明
*         ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
*         
*     @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:
*         RetentionPolicy.SOURCE 注解将被编译器丢弃
*         RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃
*         RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
*         
*     @Documented 将此注解包含在 javadoc 中
*     
*     @Inherited 允许子类继承父类中的注解
*   
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
/*
* 定义注解 Test
* 注解中含有两个元素 id 和 description
* description 元素 有默认值 "no description"
*/
public @interface Test {
public int id();
public String description() default "no description";
}
   

下面是一个使用注解 和 解析注解的实例

Java代码 
package Test_annotation;    
   
import java.lang.reflect.Method;    
   
public class Test_1 {    
    /*   
     * 被注解的三个方法   
     */   
    @Test(id = 1, description = "hello method_1")    
    public void method_1() {    
    }    
   
    @Test(id = 2)    
    public void method_2() {    
    }    
   
    @Test(id = 3, description = "last method")    
    public void method_3() {    
    }    
   
    /*   
     * 解析注解,将Test_1类 所有被注解方法 的信息打印出来   
     */   
    public static void main(String[] args) {    
        Method[] methods = Test_1.class.getDeclaredMethods();    
        for (Method method : methods) {    
            /*   
             * 判断方法中是否有指定注解类型的注解   
             */   
            boolean hasAnnotation = method.isAnnotationPresent(Test.class);    
            if (hasAnnotation) {    
                /*   
                 * 根据注解类型返回方法的指定类型注解   
                 */   
                Test annotation = method.getAnnotation(Test.class);    
                System.out.println("Test( method = " + method.getName()    
                        + " , id = " + annotation.id() + " , description = "   
                        + annotation.description() + " )");    
            }    
        }    
    }    
   
}   
package Test_annotation;

import java.lang.reflect.Method;

public class Test_1 {
/*
* 被注解的三个方法
*/
@Test(id = 1, description = "hello method_1")
public void method_1() {
}

@Test(id = 2)
public void method_2() {
}

@Test(id = 3, description = "last method")
public void method_3() {
}

/*
* 解析注解,将Test_1类 所有被注解方法 的信息打印出来
*/
public static void main(String[] args) {
   Method[] methods = Test_1.class.getDeclaredMethods();
   for (Method method : methods) {
    /*
    * 判断方法中是否有指定注解类型的注解
    */
    boolean hasAnnotation = method.isAnnotationPresent(Test.class);
    if (hasAnnotation) {
     /*
     * 根据注解类型返回方法的指定类型注解
     */
     Test annotation = method.getAnnotation(Test.class);
     System.out.println("Test( method = " + method.getName()
       + " , id = " + annotation.id() + " , description = "
       + annotation.description() + " )");
    }
   }
}

}
   

输出结果如下:


    Test( method = method_1 , id = 1 , description = hello method_1 ) 
    Test( method = method_2 , id = 2 , description = no description ) 
    Test( method = method_3 , id = 3 , description = last method )
 

分享到:
评论

相关推荐

    Java 基础(5-8) - 注解机制详解.pdf

    Java中的注解机制是从JDK1.5版本开始引入的特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有四方面:生成文档、编译检查、编译时动态处理、运行时动态处理。 ...

    java注解、java反射机制 jdbc 封装

    Java注解和反射机制是Java开发中的重要工具,它们极大地增强了代码的可读性和灵活性。在结合JDBC(Java Database Connectivity)API时,可以构建出更高效、更易维护的数据访问层。本案例通过注解的方式,简化了JDBC...

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制是Java语言中的一种元数据 Facility,提供了一种在编译期和运行期对Java代码进行标记和描述的机制, Spring框架中使用Java注解机制来实现自动装配功能。自动装配是指Spring框架根据注解信息来自动将Bean...

    Java自定义注解使用反射获取字段注解

    Java自定义注解是Java语言中的一个重要特性,它允许我们创建自己的元数据,为代码提供额外的信息。在Java中,注解(Annotation)主要用于编译器检查、代码生成、运行时处理等方面。本文将深入探讨如何通过反射机制来...

    java通用注解API

    通过阅读《Java通用注解和API规范.pdf》这份文档,你可以更深入地理解Java注解的原理、使用方法以及最佳实践,从而在实际开发中更好地利用这一强大的工具。这份文档涵盖了从基础概念到高级特性的全面内容,对于Java...

    java基础教程----精华版

    下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据...

    java事务 - 使用注解

    本篇文章将深入探讨如何使用Java注解进行事务管理,特别是Spring框架中的@Transactional注解。 **1. 事务的基本概念** 事务具有四个特性,也称为ACID属性: - 原子性(Atomicity):事务中的所有操作要么全部完成,...

    java-lib-annotated-validator,使用注解的Java验证程序库.zip

    - **注解(Annotations)**:注解是Java语言中的一种元数据,它可以被编译器或JVM在运行时读取,用来提供有关代码的附加信息。在这个库中,自定义的注解用于指定验证规则。 - **反射(Reflection)**:Java反射API...

    Java注解学习1-Java Annotation认知(包括框架图、详细介绍、示例说明)

    Java 注解(Annotation)是自 JDK 5.0 版本引入的一种元数据机制,用于向编译器、开发工具和运行时系统提供有关代码的附加信息。它们并不直接影响程序的执行,但可以用于代码分析、编译时验证或者运行时处理。本文将...

    java注解_反射_字节码_类加载机制.zip

    Java注解、反射、字节码和类加载机制是Java编程中的核心概念,它们在实际开发中扮演着重要角色。让我们深入探讨这些知识点。 **Java注解(Annotation)**: Java注解是一种元数据,它提供了在编译时或运行时处理代码的...

    Java学习资料-反射机制和注解

    Java 提供了`java.lang.annotation`包来支持注解的处理,包括反射API中的`AnnotatedElement`接口,可以用于查询注解的存在和值。 总结来说,Java的反射机制和注解是两种强大的工具,它们增强了代码的动态性和元数据...

    吴天雄-Java注解及动态性详解.doc

    Java注解,也称为Annotation,是自JDK 5.0版本起引入的一种元数据机制,它为程序提供了额外的信息,这些信息可以在编译时或运行时被解析和使用。元数据是描述数据的数据,注解就是一种特殊的数据类型,可以用于修饰...

    Java 注解技术视频详解

    自定义注解是Java注解机制的一大亮点。开发者可以通过定义自己的注解类型,来添加特定的元数据。定义注解时,可以指定元素(也称为属性),元素可以有默认值,并且可以是基本类型或者字符串等。例如: ```java @...

    java注解使用例子

    Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器、JVM或者第三方工具提供信息。在Java程序中,注解可以被附加到类、接口、方法、变量等元素上,用于执行代码检查、生成代码、部署等任务。本篇...

    实战java反射机制-让你迅速认识java强大的反射机制

    在"实战java反射机制-让你迅速认识java强大的反射机制"这个主题中,我们将深入探讨反射的核心概念和实际应用。 1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`...

    java 注解开发(包含详细注释,项目可以直接运行)

    Java注解是自JDK1.5版本引入的一种元数据机制,它允许程序员在源代码的各个层次(类、方法、变量等)嵌入信息,这些信息可以被编译器或者运行时系统用来进行各种处理。注解简化了配置文件的使用,提高了代码的可读性...

    一种基于Java注解和反射机制的Excel文件读写操作方法.pdf

    根据提供的文件信息,我们可以梳理出以下知识点: ...以上知识点详细阐述了文档中提到的方法和技术原理,为理解和应用Java注解和反射机制在Excel文件读写操作中的实际应用提供了理论基础和技术指导。

    Java注解机制的应用研究.pdf

    Java注解机制是Java语言中的一个重要特性,自JDK 5.0引入以来,它已经成为了现代Java开发不可或缺的一部分。注解(Annotation)提供了一种元数据的方式,允许程序员在代码中添加额外的信息,这些信息不会直接影响...

    Java元注解是Java注解的重要特性,下面我就来详解常见的4大Java元注解

    Java 元注解详解 Java 元注解是 Java 注解的重要特性,它们是用于修饰注解的注解。Java 元注解的作用是通过使用 ...在实际开发中, Understanding Java 元注解的作用和使用场景对于提高编程效率和代码质量非常重要。

    注解javademo演示

    Java注解,也被称为元数据,是Java编程语言中的一个重要特性,它允许程序员在源代码中插入一些附加信息。这些信息可以被编译器或运行时环境用来验证代码、优化性能,或者提供自定义处理。Java注解在现代Java开发中...

Global site tag (gtag.js) - Google Analytics