`

Reflection 反射

阅读更多
How to use Reflection in Java
http://www.java-tips.org/java-se-tips/java.lang.reflect/how-to-use-reflection-in-java.html
引用

Reflection is a powerful approach to analyze the class at runtime. If new classes are added into your application dynamically then Reflection is used to get the structure of the class.

Reflection uses special kind of java class: Class. The object of the Class type can hold all the information of the class and have getter methods to extract this information.

This example code extracts the structure of the String class. It will display the name of the constructors, declared fields and methods to the console.
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectionExample {

  public static void main(String[] args) {
    try {
      // Creates an object of type Class which contains the information of 
      // the class String
      Class cl = Class.forName("java.lang.String");

      // getDeclaredFields() returns all the constructors of the class.
      Constructor cnst[] = cl.getConstructors();

      // getFields() returns all the declared fields of the class.
      Field fld[] = cl.getDeclaredFields();

      // getMethods() returns all the declared methods of the class.
      Method mtd[] = cl.getMethods();
      System.out.println("Name of the Constructors of the String class");

      for (int i = 0; i < cnst.length; i++) {
        System.out.println(cnst[i].getName());
      }

      System.out.println("Name of the Declared fields");

      for (int i = 0; i < fld.length; i++) {
        System.out.println(fld[i].getName());
      }

      System.out.println("Name of the Methods");

      for (int i = 0; i < mtd.length; i++) {
        System.out.println(mtd[i].getName());
      }

    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }

}





Invoke method using Reflection
http://www.java-tips.org/java-se-tips/java.lang.reflect/invoke-method-using-reflection.html
引用

Reflection is used to invoke a method when name of the method is supplied at run time. This tip will show a sample code to do that.
import java.lang.reflect.Method;

public class RunMthdRef {
  public int add(int a, int b) {
    return a+b;
  }

  public int sub(int a, int b) {
    return a-b;
  }

  public int mul(int a, int b) {
    return a*b;
  }

  public int div(int a, int b) {
    return a/b;
  }

  public static void main(String[] args) {
    try {
      Integer[] input={new Integer(2),new Integer(6)};
      Class cl=Class.forName("RunMthdRef");
      Class[] par=new Class[2];
      par[0]=Integer.TYPE;
      par[1]=Integer.TYPE;
      Method mthd=cl.getMethod("add",par);
      Integer output=(Integer)mthd.invoke(new RunMthdRef(),input);
      System.out.println(output.intValue());
    } catch (Exception e) {
      e.printStackTrace();
    } 
  }
}





Explore the Dynamic Proxy API
http://www.javaworld.com/javaworld/jw-11-2000/jw-1110-proxy.html

Java Reflection: Dynamic Proxies
http://tutorials.jenkov.com/java-reflection/dynamic-proxies.html
分享到:
评论

相关推荐

    javaReflection反射机制.ppt

    之前上课的时候老师总结的JavaReflection反射学习资料,内容简单易懂,浅显易懂,适合小白入手学习。。

    reflection反射

    Object instance = constructor.newInstance("Hello, Reflection!"); ``` 这会创建一个带有给定参数的新实例。 ### 5. 调用方法 `Method`对象提供了`invoke(Object obj, Object... args)`方法,允许我们在运行时...

    java Reflection 反射机制 反编译

    package day29; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class ReflectionTest { public static void main(String[] args) { ...

    Reflection反射.md

    ### Java反射机制详解 #### 一、Java反射机制概述 反射是Java的一种强大的特性,它使得Java成为一种“准动态语言”。尽管Java本质上是一种静态类型语言,但它支持一些类似于动态语言的功能,比如运行时能够检查类...

    北大青鸟ACCP6.0 第三学期 Y2 JAVA方向 reflection 反射

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在北大青鸟ACCP6.0第三学期Y2的JAVA方向课程中,反射作为核心知识点被深入讲解,主要是为了提升...

    java reflection反射机制示例

    Java反射机制是Java编程语言中的一个强大工具,它允许运行时动态访问类的信息,包括类名、属性、方法以及构造器等。通过反射,我们可以在程序执行过程中创建和操作任何类的对象,即使在编译时未知该类的具体信息。...

    实例介绍PHP的Reflection反射机制

    总之,PHP的Reflection反射机制为开发者提供了一种强大的手段,可以在运行时深入分析和操作类的内部结构,这不仅有助于调试和测试,也为创建动态代码生成器等高级应用提供了可能。通过使用Reflection API,开发者...

    Unity Planar Reflection平面反射

    Unity Planar Reflection平面反射

    reflection 详解

    在Java编程语言中,Reflection(反射)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。Reflection的概念基于这样一个事实:Java程序不仅可以执行预先定义的操作,还可以在运行时动态地...

    反射Reflection小应用

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以动态地创建对象、调用方法、访问字段,甚至处理私有成员,这在某些情况下非常...

    C#反射(Reflection)的应用

    在C#编程语言中,反射(Reflection)是一个强大的工具,它允许程序在运行时检查自身的行为,包括类、接口、属性、方法等元数据信息,并能够动态地创建对象和调用方法。这篇压缩包文件提供了关于C#反射的实践示例,...

    Java Reflection (JAVA反射)详解

    Java 反射(Reflection)是Java编程语言的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、方法、字段等)并直接操作对象的内部属性。这为开发者提供了强大的灵活性,能够在不预先知道具体类的情况下...

    C#反射(Reflection)详解

    C#反射(Reflection)详解 什么是反射 命名空间和装配体的关系

    圣思园 reflection(Java反射) 课件

    Java反射机制是Java编程语言中一个强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,开发者可以在程序执行过程中动态地获取类的信息并进行操作,这为Java应用程序提供了高度的灵活性...

    JAVA 私塾笔记整理——反射机制(Reflection)

    在"JAVA私塾笔记整理——反射机制(Reflection)"这份文档中,我们将深入探讨反射机制的基础知识、用途和实现方式。 1. **反射机制的基本概念** 反射机制是Java提供的一种能够在运行时分析类和对象的能力。它允许...

    在3DS-MAX虚拟现实中反光材质的实现.docx

    在材质命令面板中选择 Maps 下选择 Reflection 反射贴图,然后选择程序 Reflect/Refract,将设置指定为 Reflect 反射时产生反射效果,将设置指定为 Refract 折射时产生折射效果。 反光材质在 3DS MAX 虚拟现实中的...

    Java Reflection (JAVA反射.mht

    Java Reflection (JAVA反射.mht

Global site tag (gtag.js) - Google Analytics