《【最新】[Java基础教程_兄弟连马剑威]_133_反射机制》由会员分享,可在线阅读,更多相关《【最新】[Java基础教程_兄弟连马剑威]_133_反射机制(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类的forName方法:2、Cla
2、ss类使用Class类进行对象的实例化操作调用无参构造进行实例化publicTnewInstance()throwsInstantiationException,IllegalAccessException调用有参构造进行实例化publicConstructorgetConstructors()throwsSecurityException3、通过Class类取得类信息n取得类所在的包publicPackagegetPackage()/得到一个类所在的包publicStringgetName()/得到名字n取得一个类中的全部方法publicMethodgetMethods()publicint
3、getModifiers()/Modifier.toString(mod);/还原修饰符publicClassgetReturnType()publicClassgetParameterTypes()publicClassgetExceptionTypes()publicstaticStringtoString(intmod)n取得一个类中的全部属性publicFieldgetFields()publicFieldgetDeclaredFields()publicClassgetType()publicintgetModifiers()publicStringgetName()4、通过Clas
4、s类调用属性或方法n调用类中的方法调用类中的方法,传入实例化对象,以及具体的参数内容publicObjectinvoke(Objectobj,Object.args)n直接调用属性取得属性publicObjectget(Objectobj)/设置属性,等同于使用“=”完成操作publicvoidset(Objectobj,Objectvalue)/让属性对外部可见publicvoidsetAccessible(booleanflag)5、动态代理所谓动态代理,即通过代理类:Proxy的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联。java动态代理主要是
5、使用java.lang.reflect包中的两个类。nInvocationHandler类publicObjectinvoke(Objectobj,Methodmethod,Objectobs)其中第一个参数obj指的是代理类,method是被代理的方法,obs是指被代理的方法的参数组。此方法由代理类来实现。5、动态代理nProxy类protectedProxy(InvocationHandlerh);staticClassgetProxyClass(ClassLoaderloader,Classinterfaces);staticObjectnewProxyInstance(ClassLoaderloader,Classinterfaces,InvocationHandlerh);动态代理其实是在运行时生成class,所以,我们必须提供一组interface,然后告诉他class已经实现了这些interface,而且在生成Proxy的时候,必须给他提供一个handler,让他来接管实际的工作。谢谢Thanks