第10的章-反射.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10的章-反射

目标 类加载 类加载概述 类加载器是在运行时负责寻找和加载类文件的类。Java允许使用不同的类加载器,甚至自定义的类加载器。 Class类 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。 Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。 类加载-1 Class类的常用方法: 类加载-2 Class类实例 通过继承关系演示Class类的使用。首先定义Person类及其子类Student类,结构如下 : 类加载-3 测试代码使用Class类实现Student对象的创建。代码如下 : 类加载-4 ClassLoader 类装载器是用来把类(class)装载进JVM的。JVM规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-defined class loader)。 JVM在运行时会产生3个类加载器组成的初始化加载器层次结构 ,如下图所示: 类加载-5 演示类加载机制的层次关系 : 类加载-6 instanceof instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例 。在讲述接口时已经介绍过,在此只做几点补充 : 子类对象 instanceof 父类,返回 true 父类对象 instanceof 子类,返回 false 如果两个类不在同一继承家族中,使用instanceof时会出现错误 数组类型也可以使用instanceof来比较 反射 反射概述 Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 生成动态代理 反射-1 Constructor类 Constructor类用于表示类中的构造方法(constructor),通过调用 Class对象的getConstructors()方法就能获取当前类的构造方法的集合。Constructor常用方法及使用如下表所示: 反射-2 Constructor类实例-1 通过getConstructors方法用于获取指定类的构造方法信息 ,代码如下 : 反射-3 Constructor类实例-2 通过传入java.util.Date类,来获取Date类的构造方法定义 ,代码如下 : 反射-4 Method类 Method类提供关于类或接口中某个方法的信息,它是用来封装反射类方法的一个类。Method类的常用方法及使用说明如下表所示: 反射-5 Method类实例-1 通过getMethods方法获取指定类的所有方法的信息 ,代码如下所示: 反射-6 Method类实例-2 通过传入java.util.Date类,来获取Date类的方法列表 ,代码如下 : 反射-7 Field类 Field类提供有关类或接口的属性的信息,以及对它的访问权限。Field类的常用方法及使用说明如下表所示: 反射-8 Field类实例-1 通过getMethods方法用于获取指定类或接口定义的属性信息 ,代码如下所示: 反射-9 Field类实例-2 通过传入java.util.Date类,来获取Date类的属性列表 ,代码如下 : 小结 第十章 反射 理解Class类 理解Java的类加载机制 学会使用ClassLoader进行类加载 学会使用instanceof关键字判断引用类型 理解反射的机制 掌握Constructor、Method、Field类的用法 获取当前Class对象的接口 Class [] getInterfaces() 返回该类的类加载器 ClassLoader getClassLoader() 返回当前Class对象的父类的Class对象 Class getSuperClass() 调用当前格式构造函数,返回该Class对象的一个实例 Object newInstance(Object []args) 返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称 getName() 调用缺省构

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档