Java反射机制

来源:互联网 发布:我们相爱吧网络直播 编辑:程序博客网 时间:2024/06/10 01:26
Java反射机制一.概述 reflection是一系列的API,用于表示或者处理当前JVM中的类,接口和对象. java.lang.reflect/java.lang.Class二.主要功能 确定一个对象的类 取出类的modifiers,数据成员,方法,构造器,和超类. 找出某个接口里定义的常量和方法说明. 创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象). 取得和设定对象数据成员的值,如果数据成员名是运行时刻确定的也能做到. 在运行时刻调用动态对象的方法. 创建数组,数组大小和类型在运行时刻才确定,也能更改数组成员的值.三.分析类 取得数据成员名,方法和构造器四.取得Class对象 方法一> 如:myobject是某个类的对象 则他的Class对象是Class myobjectclass=myobject.getClass() System.err.println(myobjectclass.toString()) 方法二>取得某类对象的超类,可以用getSuperClass()方法 如:TextComponet 类是TextField的超类 TextField t=new TextField(); Class c=t.getClass(); Class s=c.getSuperclass(); 方法三>如果已知一个class 如:已知java.swt.(Button.class) Class c=java.swt.Button.class;//直接获得Class对象. System.err.println(c.toString()); 方法三>运行时才确定的类.(运行时绑定) forName(类名)返回一个Class对象. 如:Class c=Class.forName("java.swt.Button") 五.取得类名六.找出超类 getSuperclass(); c x=new c(); Class xx=x.getClass(); Class xxx=xx.getSuperclass(); System.err.println(xx.toString());//class System.err.println("XX的超类是:"+xxx.toString());七.确定某类实现的接口 getIntface()方法,返回一个Class对象数组. MyObject o=new MyObject(); Class c=o.getClass(); Class[] theinterfaces=c.getIntfaces(); for(int i=0;i myobject o=new myobject(); Class c=o.getClass(); Constructor[] theConstructors=c.getConstructors(); for(int i=0;i:无参数. forName()找到一个类,然后用newInstance()创建一个对象. Class c=Class.forName("java.lang.Thread");//装载类. Thread t=c.newInstance(); 方法二>有参数的,构造器newInstance() Class c=Class.forName("java.awt.Rectangle"); Object o=null; Object[] args=new Object[] (int width,int height) Constructor constructor=c.getConstructor(); o=constructor.newInstance(object[] args)十四.判断一个Class对象是一个类还是接口. class c=java.lang.thread.class if(c.isInterface) system.out.println("是接口"); else System.out.println("是类");Java反射机制是实现hibernate以及Spring中IoC(依赖注入)的基础。