《[Java基础教程 ]反射机制ppt课件.ppt》由会员分享,可在线阅读,更多相关《[Java基础教程 ]反射机制ppt课件.ppt(10页珍藏版)》请在三一办公上搜索。
1、反射机制,马剑威,第 133 讲,课程大纲,1、什么是反射2、Class类3、通过Class类取得类信息4、通过Class类调用属性或方法5、动态代理,1、什么是反射,反射:Reflection,类信息,对象,对象,类信息,2、Class类,Class类是一切的反射根源。Class类表示什么?很多的人可以定义一个Person类(有年龄,性别,姓名等)很多的车可以定义一个Car类(有发动机,颜色,车轮等)很多的类Class类(类名,构造方法,属性,方法)得到Class类的对象有三种方式:第一种形式:Object类中的getClass()方法第二种形式:类.class第三种形式:通过Class类的
2、forName方法:,2、Class类,使用Class类进行对象的实例化操作调用无参构造进行实例化public T newInstance()throws InstantiationException,IllegalAccessException调用有参构造进行实例化public Constructor getConstructors()throws SecurityException,3、通过Class类取得类信息,取得类所在的包public Package getPackage()/得到一个类所在的包public String getName()/得到名字取得一个类中的全部方法public
3、 Method getMethods()public int getModifiers()/Modifier.toString(mod);/还原修饰符public Class getReturnType()public Class getParameterTypes()public Class getExceptionTypes()public static String toString(int mod)取得一个类中的全部属性public Field getFields()public Field getDeclaredFields()public Class getType()public
4、 int getModifiers()public String getName(),4、通过Class类调用属性或方法,调用类中的方法调用类中的方法,传入实例化对象,以及具体的参数内容public Object invoke(Object obj,Object.args)直接调用属性取得属性public Object get(Object obj)/设置属性,等同于使用“=”完成操作public void set(Object obj,Object value)/让属性对外部可见public void setAccessible(boolean flag),5、动态代理,所谓动态代理,即通过
5、代理类:Proxy的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联。java动态代理主要是使用java.lang.reflect包中的两个类。InvocationHandler类publicObjectinvoke(Objectobj,Methodmethod,Objectobs)其中第一个参数 obj 指的是代理类,method是被代理的方法,obs是指被代理的方法的参数组。此方法由代理类来实现。,5、动态代理,Proxy类protected Proxy(InvocationHandler h);static Class getProxyClass(ClassLoader loader,Class interfaces);static Object newProxyInstance(ClassLoader loader,Classinterfaces,InvocationHandler h);动态代理其实是在运行时生成class,所以,我们必须提供一组interface,然后告诉他class已经实现了这些interface,而且在生成Proxy的时候,必须给他提供一个handler,让他来接管实际的工作。,谢谢,Thanks,