知识大全 java反射Annotation

Posted

篇首语:引诱肉体的是金钱和奢望,吸引灵魂的是知识和理智。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java反射Annotation相关的知识,希望对你有一定的参考价值。

java反射Annotation  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  import java lang annotation Annotation;import java lang annotation ElementType;import java lang annotation Retention;import java lang annotation RetentionPolicy;import java lang annotation Target;import java lang reflect Constructor;import java lang reflect Field;import java lang reflect Method;

  @Target(ElementType CONSTRUCTOR)// 用于构造方法@Retention(RetentionPolicy RUNTIME)// 在运行时加载到Annotation到JVM中(这个一定不能丢掉 否则在getAnnotation的时候取不到!!!)@interface Constructor_Annotation     String value() default 默认构造方法 ; // 定义一个具有默认值的String型成员

  @Target( ElementType FIELD ElementType METHOD ElementType PARAMETER )// 用于字段 方法 参数@Retention(RetentionPolicy RUNTIME)// 在运行时加载到Annotation到JVM中@interface Field_Method_Parameter_Annotation     Class type() default void class; // 定义一个具有默认值的Class型成员

  String describ(); // 定义一个没有默认值的String成员

  public class AnnotationTest

  @Field_Method_Parameter_Annotation(describ = 字段编号 type = int class)    // 注释字段    int id;    @Field_Method_Parameter_Annotation(describ = 字段姓名 type = String class)    // 注释字段    String name;

  @Constructor_Annotation()    // 采用默认构造方法    public AnnotationTest()

  

  @Constructor_Annotation( 立即初始化构造方法 )    // 注释构造方法    public AnnotationTest(    // 注释构造方法参数            @Field_Method_Parameter_Annotation(describ = 编号 type = int class) int id @Field_Method_Parameter_Annotation(describ = 姓名 type = String class) String name)         this id = id;        this name = name;   

  @Field_Method_Parameter_Annotation(describ = 获得编号 type = int class)    public int getId()         return id;   

  @Field_Method_Parameter_Annotation(describ = 设置编号 )    // 成员type 采用默认注释方法    public void setId(    // 注释参数            @Field_Method_Parameter_Annotation(describ = 设置编号 type = int class) int id)         this id = id;   

  @Field_Method_Parameter_Annotation(describ = 获得姓名 type = String class)    public String getName()         return name;   

  @Field_Method_Parameter_Annotation(describ = 设置姓名 )    public void setName(@Field_Method_Parameter_Annotation(describ = 姓名 type = String class) String name)         this name = name;   

  /**     * @param args     */    public static void main(String[] args)         // TODO Auto generated method stub        // 构造方法         Constructor[] declaredConstructor = AnnotationTest class getDeclaredConstructors(); // 获得所有的构造方法        for (int i = ; i < declaredConstructor length; i++)             Constructor constructor = declaredConstructor[i]; // 遍历构造方法            if (constructor isAnnotationPresent(Constructor_Annotation class)) // 查看是否指定类型的注释                            Constructor_Annotation ca = (Constructor_Annotation) constructor getAnnotation(Constructor_Annotation class);                System out println( ca value()=: + ca value());           

  Annotation[][] parameterAnnotations = constructor getParameterAnnotations();// 获得参数注释            for (int j = ; j < parameterAnnotations length; j++)                 int length = parameterAnnotations[j] length;                if (length == ) // 如果为 则表示没有为该参数添加注释                                    System out println( 没有为该参数添加注释 );                else                     for (int k = ; k < length; k++)                         // 获得参数注释                        Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation) parameterAnnotations[j][k];                        System out print( + pa describ()); // 参数描述                        System out println( + pa type()); // 参数类型                                                            System out println( **************** );       

  // 字段         System out println( ********字段的Annotation************* );        Field[] declaredFields = AnnotationTest class getDeclaredFields(); // 获得所有的字段        for (int i = ; i < declaredFields length; i++)             Field field = declaredFields[i];            // 查看是否具有指定类型的注释             if (field isAnnotationPresent(Field_Method_Parameter_Annotation class))                 Field_Method_Parameter_Annotation fa = (Field_Method_Parameter_Annotation) field getAnnotation(Field_Method_Parameter_Annotation class);                System out print( + fa describ()); // 获得字段描述                System out println( + fa type()); // 获得字段类型                   

  // 方法        System out println( ********方法的Annotation************* );        Method[] methods = AnnotationTest class getDeclaredMethods(); // 获得所有的方法        for (int i = ; i < methods length; i++)             Method method = methods[i];            // 查看是否指定注释             if (method isAnnotationPresent(Field_Method_Parameter_Annotation class))

                  Field_Method_Parameter_Annotation ma = (Field_Method_Parameter_Annotation) method getAnnotation(Field_Method_Parameter_Annotation class);                System out print( + ma describ()); // 获得方法描述                System out println( + ma type()); // 获得方法类型           

  Annotation[][] parameterAnnotations = method getParameterAnnotations(); // 获得所有参数            for (int j = ; j < parameterAnnotations length; j++)                 int length = parameterAnnotations[j] length;                if (length == )                     System out println( 没有添加Annotation参数 );                else                     for (int k = ; k < length; k++)                         // 获得指定的注释                         Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation) parameterAnnotations[j][k];                        System out print( + pa describ()); // 获得参数描述                        System out println( + pa type()); // 获得参数类型                                                            System out println( ******************** );

     

cha138/Article/program/Java/hx/201311/26396

相关参考

知识大全 Java反射机制深入研究

Java反射机制深入研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java反射是Java语

知识大全 java反射机制

  JAVA反射机制是在运行状态中对于任意一个类都能够得到这个类的所有属性和方法;对于任意一个对象都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 

知识大全 Java Reflection (JAVA反射)详解

JavaReflection(JAVA反射)详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 实用的Java反射工具类

实用的Java反射工具类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  反射的Utils函数集合

知识大全 Java动态程序设计——反射介绍

Java动态程序设计——反射介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java动态程序

知识大全 Java反射设置私有属性和获取属性

Java反射设置私有属性和获取属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java代码 

知识大全 Java反射机制的应用例子

Java反射机制的应用例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  目标用一个代理类实现两

知识大全 Java反射机制中常用API

Java反射机制中常用API  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Class是Refl

知识大全 Java反射访问私有变量和私有方法

Java反射访问私有变量和私有方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言  对于软

知识大全 在Java中使用反射分析类结构

在Java中使用反射分析类结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先要获取需要进行