zoukankan      html  css  js  c++  java
  • JAVA反射机制

    JAVA语言中的反射机制是指在Java运行时环境中,对于任意一个类,能够动态地获取这个类的属性和方法。

    Java反射机制主要提供以下功能:

      1.在运行时判断任意一个对象所属的类

      2.在运行时构造任意一个类的对象

      3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)

      4.在运行时调用任意一个对象的方法

    Java反射相关的API:

      位于java.lang.reflect包中

      -Class类:代表一个类

      -Fiele类:代表类的成员变量

      -Method类:代表类的方法

      -Constructor类:代表类的构造方法

      -Array类:提供动态创建数组,以及访问数组的元素的静态方法,该类中的所有方法都是静态方法

    ----Class类

    在Java的Object类中的申明了数个应用所有Java类中被被改写的Methods:hashCode()、equls()、clone()、toString()、getClass()等

    其中的getClass返回一个Class类型的对象。

    Class类十分的特殊,它和一般的类一样继承于Object,其实体用以表达Java程序运行时的Class和Interface,也用来表达enum、array、primtive、Java Type以及关键字void,当加载一个类,或者当加载器(ClassLoader)的defineClass()被JVM调用,便产生了一个Class对象。Class是Reflection起源,针对任何你想探勘的Class,唯有现为它产生一个Class对象,接下来才能经由后者唤起数十个反射API。

    Java允许我们从多种途径为一个类Class生成对应的Class对象:

    --运用getClass():Class class=object.getClass();

    --运用Class.getSuperClass()

    --运用Class.forName() :最为常用

    --运用类名.class

    --运用primitive wrapper classes的TYPE语法:Integer.TYPE

    ----运行时生成instance

    想生成对象的实例,在反射动态机制中有两种方法,一个针对无变量的构造方法,一个针对带参数的构造方法。如果想调用带参数的构造方法,就比较麻烦,不能直接调用Class类中的newInstatance(),而是调用Constructor类中的newInstance()方法。首先准备一个Class[] 作为Constructor的参数类型,然后调用该Class对象的getConstructor()方法获得一个专属的Constructor对象,最后再准备一个Object[]作为Constructor对象的newInstance()方法的实参。

    例如:

      Class c=Class.forName("Dyn Test");

      Class[] ptype=new Class[]{double.class,int.class};

      Constructor ctor=c.getConstructor(ptypr);

      Object[] obj=new Object[]{new Double(3.1415),new Integer(123)};

      Object object=ctor.newInstance(obt);

      System.out.println(object);

  • 相关阅读:
    D3D中的粒子系统(1)
    半角/全角的转换算法
    对Native API NtSystemDebugControl的分析
    教你快速下载fs2you.com网盘的文件
    养眼的编辑器配色
    Direct3D中的绘制(2)
    在服务里面弹出一个窗口到用户的桌面上[转]
    驱动级隐藏文件,注册表,进程
    GB2312转unicode程序
    Direct3D中的绘制(5)
  • 原文地址:https://www.cnblogs.com/yuchao/p/1963670.html
Copyright © 2011-2022 走看看