`

学习Java的反射机制和Annotation

    博客分类:
  • java
阅读更多

1、创建一个Annotation类JavaAnnotation.java。

Java代码 复制代码
  1. import java.lang.annotation.Documented;   
  2. import java.lang.annotation.ElementType;   
  3. import java.lang.annotation.Retention;   
  4. import java.lang.annotation.RetentionPolicy;   
  5. import java.lang.annotation.Target;   
  6.   
  7. @Target(ElementType.FIELD)   
  8. @Retention(RetentionPolicy.RUNTIME)   
  9. @Documented  
  10. public @interface JavaAnnotation {   
  11.     String value();    
  12. }  
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface JavaAnnotation {
	String value(); 
}



2、创建测试类。

Java代码 复制代码
  1. import java.lang.reflect.Field;   
  2. import java.lang.reflect.Method;   
  3.   
  4. /**  
  5.  * 学习java的反射机制  
  6.  *   
  7.  * @author sunny  
  8.  *   
  9.  */  
  10. public class ReflectTest {   
  11.   
  12.     @JavaAnnotation("字段注释")   
  13.     public String field1;   
  14.   
  15.     private String filed2;   
  16.   
  17.     public String getFiled2() {   
  18.         return filed2;   
  19.     }   
  20.   
  21.     public void setFiled2(String filed2) {   
  22.         this.filed2 = filed2;   
  23.     }   
  24.   
  25.     public String getField1() {   
  26.         return field1;   
  27.     }   
  28.   
  29.     public void setField1(String field1) {   
  30.         this.field1 = field1;   
  31.     }   
  32.   
  33.     private void act() {   
  34.         System.out.println("do nothing here......");   
  35.     }   
  36.   
  37.     public static void main(String[] args) {   
  38.         try {   
  39.             Class a = Class.forName("ReflectTest");   
  40.   
  41.             // 列举该类的所有字段   
  42.             Field[] fileds = a.getDeclaredFields();   
  43.             for (int i = 0; i < fileds.length; i++) {   
  44.                 System.out.println(i + " - " + fileds[i].toString());   
  45.             }   
  46.             System.out.println("////////////////////字段列举完毕");   
  47.   
  48.             // 列举该类的所有方法   
  49.             Method[] methods = a.getDeclaredMethods();   
  50.             for (int i = 0; i < methods.length; i++) {   
  51.                 System.out.println(i + " - " + methods[i].toString());   
  52.             }   
  53.             System.out.println("////////////////////方法列举完毕");   
  54.   
  55.             // 调用类方法   
  56.             try {   
  57.                 // 通过默认构造方法创建一个新的实例对象   
  58.                 Object instance = a.getConstructor(new Class[] {}).newInstance(   
  59.                         new Object[] {});   
  60.                 Method m = a.getDeclaredMethod("act");   
  61.                 m.invoke(instance, new Object[] {});   
  62.                 System.out.println("////////////////////方法调用完毕");   
  63.   
  64.             } catch (Exception e) {   
  65.                 e.printStackTrace();   
  66.             }   
  67.   
  68.             // 操作Annotation   
  69.             try {   
  70.                 Field f = a.getDeclaredField("field1");   
  71.                 if (f.isAnnotationPresent(JavaAnnotation.class))   
  72.                     System.out.println("JavaAnnotation of field1 is '"  
  73.                             + f.getAnnotation(JavaAnnotation.class).value()   
  74.                             + "'");   
  75.   
  76.             } catch (Exception e) {   
  77.                 e.printStackTrace();   
  78.             }   
  79.         } catch (ClassNotFoundException e2) {   
  80.             e2.printStackTrace();   
  81.         }   
  82.     }   
  83. }  
分享到:
评论

相关推荐

    Java反射机制的实现_Reflection

    Java反射机制还涉及到注解处理,可以使用`Annotation`接口及其子类来获取和处理类、方法、字段上的注解信息。这对于实现元编程、AOP(面向切面编程)和自定义注解处理器非常有用。 总的来说,Java反射机制为程序员...

    北大青鸟java反射机制

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念...

    java反射机制原理和反射机制总结

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。这一机制的核心在于`java.lang.Class`类和相关的API,它们提供了对类元数据的访问,使得我们能够在运行时...

    一个例子让你了解Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中...在实践中学习,你会更好地理解Java反射机制的威力和应用场景。

    java 反射机制详解

    这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在框架和库的开发中,如Spring框架,它大量利用了反射机制。 在上述的示例中,`Util` 类的 `convertStr2ServiceBean` 方法展示了如何通过反射来创建对象...

    java反射机制文档及代码

    Java反射机制是Java编程语言中一个...通过阅读"1139760298222java.pdf"这份文档,你可以更深入地理解Java反射机制,并结合实际示例学习如何在项目中有效利用这一特性。记得在实际操作中结合代码实践,以巩固理论知识。

    Java反射机制源码

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改私有成员,这为实现元编程和框架设计...

    java反射机制PPT

    Java反射机制是Java编程语言中一项强大的工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。反射机制的核心在于能够在运行时动态地获取类的信息,并且可以动态调用对象的方法,创建对象,甚至修改对象...

    java反射机制 字符串——java对象

    总的来说,Java反射机制和字符串操作是Java开发中不可或缺的部分,它们允许我们实现动态编程,增强程序的灵活性和可扩展性。通过结合XML序列化和解析,我们可以方便地在Java对象和XML数据之间进行转换,这对于数据...

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

    接着,我们来看Java反射机制。反射允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问字段。在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码...

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

    总结来说,Java的反射机制和注解是两种强大的工具,它们增强了代码的动态性和元数据功能。在设计和实现复杂系统时,正确地运用这些特性可以提高代码的灵活性和可维护性,但也需要注意潜在的性能和安全性问题。在实际...

    java反射机制,详细解释了,java反射机制原理、

    Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和方法。这种机制使得代码具有高度的灵活性和动态性,能够在执行过程中根据需要动态地发现和调用类的方法,创建对象,...

    java反射机制原理1

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。这一机制的核心在于`java.lang.reflect`包中的类和接口,如Class、Constructor、Method和Field。通过反射,...

    java反射机制教程

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于类名、方法名、参数类型等。这一机制的核心在于Class类,它代表了Java运行时的类信息。通过...

    Java反射函数机制实现List转换Json

    总结来说,Java反射机制提供了在运行时检查和操作类的能力,结合JSON序列化库如Jackson,我们可以方便地将List对象转换为JSON格式,以满足数据交换的需求。在实际开发中,了解并掌握这些技术能够帮助我们更好地处理...

    通过Java annotation以及反射机制实现不同类型通用的数据库访问接口

    总的来说,通过Java的注解和反射机制,我们可以构建出一个高度抽象且具有通用性的数据库访问接口,它能够适应各种不同的数据模型,极大地提高了代码的灵活性和可维护性。同时,理解Android应用的基本结构,如...

    Annotation--学习:JDK内建Annotation

    在Java编程语言中,Annotation(注解)是一种元数据,它提供了在编译时和运行时为代码添加信息的方式。注解是自Java 5版本引入的特性,它增强了代码的可读性和可维护性,同时也简化了某些编程任务。在本篇中,我们将...

    java反射机制例子

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。这个机制的核心在于`java.lang.reflect`包中的类,如Class、Constructor、Method和Field。在Java中,反射...

    Java反射机制概述.zip

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象以及它们的方法和字段。通过反射,开发者可以实现动态类型检查、元编程、插件系统等功能,大大增强了代码的灵活性和可扩展...

    java反射机制的学习心得(csdn)————程序.pdf

    Java反射机制是Java语言强大的特性之一,它允许程序在运行时获取类的信息并操作类的成员。虽然反射增加了代码的复杂性和可能的安全风险,但正确使用可以极大地提升程序的灵活性和可维护性。理解并掌握反射机制对于...

Global site tag (gtag.js) - Google Analytics