guokehua(@yahoo.com.cn oy Java 1010 附3多态和反射 2008-3-10 郭克华EE框架实战教学视频
2008-3-10 1 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 附3多态和反射
guokehua(@yahoo.com.cn 了y多态性 静态多态性: 函数重载三种情况 1010 ·动态多态性 父类(抽象类,接口)引用指向子类(实现类) 对象 函数参数传递 用对话框的例子来说明这个问题 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 2 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 多态性 • 静态多态性: – – 函数重载三种情况 函数重载三种情况 • 动态多态性: – – 父类(抽象类,接口)引用指向子类(实现类) 对象 – – 函数参数传递 – – 用对话框的例子来说明这个问题 用对话框的例子来说明这个问题
guokehua(@yahoo.com.cn oy Java Java中,反射是一种强大的工具。它使您能够创建灵活的代码, 这些代码可以在运行时装配,无需在组件之间进行源代码链接。 反射允许我们在编写与执行时,使我们的程序代码能够接入装载 到VM中的类的内部信息,而不是源代码中选定的类协作的代码。 这使反射成为构建灵活的应用的主要工具。 个典型的例子: Customer cus=new Customer 和 String str=“ Customer” str cus=new strO 有什么区别? 反射的基础: Class类 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 3 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 • Java中,反射是一种强大的工具。它使您能够创建灵活的代码, 这些代码可以在运行时装配,无需在组件之间进行源代码链接。 反射允许我们在编写与执行时,使我们的程序代码能够接入装载 到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。 这使反射成为构建灵活的应用的主要工具。 • 一个典型的例子: • Customer Customer cus = new Customer(); = new Customer(); • 和 • String str = “Customer Customer”; • str cus = new str(); • 有什么区别? • 反射的基础: Class类
guokehua(@yahoo.com.cn oy Java! 基础1:获取一个Cass对象(包装一个类的基本信息) ·从对象的实例获取 1010 Class c=mystery. getclasso 如果类名在编译时是未知的,则可 以使用Cla: Nameo方法来获取 Class c=Class forName(class String) 1·获取类名称: c.getNameo 注意看Clas的文档 008-3-10 郭克华J2E框架实战教学视频
2008-3-10 4 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 基础1:获取一个Class对象(包装一个类的基本信息) • 从对象的实例获取。 从对象的实例获取。 – –Class c = mystery. Class c = mystery.getClass getClass(); • 如果类名在编译时是未知的,则可 如果类名在编译时是未知的,则可 以使用Class.forName forName()方法来获取. – –Class c = Class. Class c = Class.forName forName(classString classString); • 获取类名称: c.getName getName(); • 注意看Class的文档
guokehua(@yahoo.com.cn oy Java! 基础2:检索指定类的构造函数 每一个构造方法可以用类 Constructor来描述,,包括名称,修饰 符,参数类型CasS,和异常列表 可以通过一个 ClassE]getConstructors方法获取到该类的 Constructor 1010 数组。 Class c=o.getclasso Constructor[ the Constructors=c. getConstructorso for (int i=0; 1< the Constructors length; 1++)( Classl parameter Types the Constructors[]. getParameter Types for (int k=0; k< parameter Types. length; k++)i String parameterString- parameter Types[ k] getName0 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 5 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 基础2:检索指定类的构造函数 :检索指定类的构造函数 • 每一个构造方法可以用类Constructor Constructor来描述,,包括名称,修饰 符,参数类型(Class[]) Class[]),和异常列表。 • 可以通过一个Class的getConstructors getConstructors方法获取到该类的Constructor Constructor 数组。 Class c = o. Class c = o.getClass getClass(); Constructor[] Constructor[] theConstructors theConstructors = c.getConstructors getConstructors(); for (int i = 0; i < i = 0; i < theConstructors theConstructors.length; i++) { .length; i++) { Class[] Class[] parameterTypes parameterTypes = theConstructors theConstructors[i].getParameterTypes getParameterTypes(); for (int k = 0; k < k = 0; k < parameterTypes parameterTypes.length; k ++) { .length; k ++) { String parameterString parameterString = parameterTypes parameterTypes[k].getName getName(); } }