第6章 反射机制.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 反射机制

第六章 反射机制 课程目标 什么是反射 Class类的介绍 如何用Class类获得类的构造方法、成员属性、成员方法 利用java反射机制动态创建对象 利用java反射机制动态调用成员方法和改变成员变量 反射的性能以及应用 反射的概念 反射 由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。 类似光学中的反射 也就是说,这类应用通过采用某种机制来实现对自身行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,随时调整或修改应用所描述行为的状态和相关的语义。 java中反射是一种强大的工具。它使我们能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码链接。 反射允许我们在编写与执行程序时,使我们的程序代码能够接入或装载到JVM中类的内部,而不是源代码中选定的类协作的代码。 java.lang.reflect包介绍 在JDK中,主要是由以下类来实现java反射机制的,这些类都位于java.lang.reflect包当中。 Class类: 代表一个类。 ? Field类: 代表类的成员变量,也称为类的属性。 ? Method类: 代表类的方法。 ? Constructor类: 代表类的构造方法。 ? Array类:该类提供动态地生成和访问java数组的方法。 检测类--Class 类概述 Class对象 众所周知java有个Object 类,是所有类的继承根源,Object类声明了多个应该在所有类中被改写的methods方法,如:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回了一个Class 类对象。 一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。我们看下面示例: 示例 class Candy { static{ System.out.println(Loading Candy); } } class Gum{ static{ System.out.println(Loading Gum); } } public class TestClass { public static void main(String[] args) { System.out.println(inside main); new Candy(); System.out.println(After creating Candy); try{ Class.forName(Gum); } catch (ClassNotFoundException e) { System.out.println(Couldnt find Gum); } System.out.println(After Class.forName(\Gum\)); } } forName forName(“Gum”)这个方法是Class类(所有Class对象都属于这个类)的一个static成员方法。 Class对象就和其它对象一样,我们可以获取并操作它的引用(对象)。 forName(String className)是取得Class对象的引用的一种方法。返回与带有给定字符串名的类或接口相关联的Class对象。 获取Class实例的三种方式 第一种:利用对象调用getClass()方法获取该对象的Class实例。 用法如下: String str=abc; Class c=str.getClass(); 第二种:使用Class类的静态方法forName(),用类的名字获取一个Class实例。如上例。 第三种:对于基本数据类型的封装类,可以采用.TYPE来获取相对应的基本数据类型的Class实例。如以下语句获得一个int类型的封装类实例: Class intClass=Integer.TYPE Class类的其他方法 Object newInstance() 使用所选的Class对象生成该类的新实例。它调用了缺省(无参数)的类构造器生成新的对象。所以使用newInstance()方法创建的类必须有一个缺省构造器。对于newInstance()来说,可以在原先没有任何对象存在的情况下,使用它创建一个新的对象。 boolean isInstance() 方法 提供了一种动态地调用instance

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档