JAVA反射机制

来源:互联网 发布:c语言小写字母转大写 编辑:程序博客网 时间:2024/05/20 07:18

      先说说JAVA的反射机制能够做哪些事情吧。

      在JAVA运行时环境里,对于任何一个类,能否知道这个类有哪些属性和方法;对于任何一个对象,能否调用这个对象的任意一个方法。

答案是肯定的,而且就是通过JAVA的反射机制来实现这一点的。这个功能是非常强大的。

      那么REFLECTION到底能做哪些事情呢?

      1)判断任意一个对象所属的类。

      2)构造任意一个类的对象。

      3)在运行时判断任意一个类的成员变量和方法。

      4)生产动态代理。

       JAVA反射机制(REFLECTION)是java被视为动态或者准动态语言的一个关键性质。那何为动态语言?动态语言指的是在程序运行时,允许改变程序结构或者变量类型,这样的语言称为动态语言。

       反射机制允许程序在运行时透过REFLECTION APIS取得任何一个已知名称的Class的内部信息。包括modifiers(修饰符),Fields(成员变量),Methods(成员方法),实现之Interfaces(接口),还有其SuperClass(父类),以及能够在运行时修改成员变量和调用成员方法。

 

       REFLECTION APIS

       1)Class类。

       2)Method类。

       3)Field类。

       4)Constructor类。

       5)Array类。

 

获取一个对象的Class对象:

       1)类名.Class。例如:String.Class;int.Class;

       2)原生类型包装类.TYPE。例如:Integer.TYPE;Long.TYPE;

       3)对象名.getClass(); 例如:Class<?> classType = obj.getClass();

 

运行时生成INSTANCES:

       1)无自变量的constructor。

例如:Class cls = obj.getClass();

         Object obj = cls.newInstance();

       2)带自变量的constructor。

例如:Class c = obj.getClass();

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

         Constructor cc = c.getConstructor(ptypes);

         Object[] objs = new Object[]{34.5,12};

         Object newObj = cc.newInstance(objs);

 

 

 

原创粉丝点击