Java_反射机制.pptxVIP

  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文档。上传文档
查看更多
Java_反射机制

每节要点要点1了解反射的特点要点2能够区别Class与class要点3记住并能使用三种实例化方式要点4了解公有与私有的获取方式要点5了解反射的基本原理引入(Why)什么是动态语言? 程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。动态语言例如Perl,Ruby ,javascript等,C、Java 和 C#是静态语言6 days 一般的类的实例化是通过new一个类来创建它的实例化对象,可是当需要去实例化一个只有在java程序运行时才知道其名字的类时,该怎么做? 反射能解决这个问题。Java的反射机制为何Java作为静态语言,同时也被视为动态(或者准动态)语言? Reflection是Java被视为准动态语言的一个关键性质,因为反射机制允许程序在运行时透过Reflection的APIs取得任意一个已知名称的类的内部信息,包括:(1) 访问修饰符、超类、实现的接口(2) 类的属性成员和方法的信息(3) 可以在运行时改变属性成员的值或者调用类中的方法 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;在程序运行状态中,能够动态获取任意一个类的信息以及调用对象的方法的功能称之为java语言的反射机制。Java的反射机制Java反射机制主要提供了以下功能:1.在运行时判定任意一个对象所属的类;2.在运行时构造任意一个类的对象;3.在运行时判定任意一个类所具有的成员变量和方法;4.在运行时调用任意一个对象的方法在JDK中,主要由以下类来实现Java反射机制, Class类位于java.lang包中,其他类都位于java.lang.reflect包中- Class类:代表一个类- Method类:代表类的方法- Field 类:代表类的成员变量(成员变量也称为类的属性)- Constructor类:代表类的构造方法- Array类:提供了动态创建数组,以及访问数组的元素的静态方法Java的反射机制出产地年份名字酿造方法 通俗地说,拥有反射机制的java程序,就如一名品酒师,它可以通过接触某个不知名的类来分析出这个类具有哪些属性和方法。Class与class在java中,每一个类通过编译后会生成一个.class的字节码文件,而同一个类实例化出来的所有对象,都会对应于同样一个.class文件。 也就是说:在java中,一个类无论实例化多少个对象,这些对象都会对应同一个Class对象Class类是Reflection API 中的核心类,这个类是所有.class文件的抽象体现。 也就是说,所有类的字节码文件,都可以看做是Class类的实例化对象,它有以下方法:– getName():获得类的完整名字。– getFields():获得类的public类型的属性。– getDeclaredFields():获得类的所有属性。– getMethods():获得类的public类型的方法。– getDeclaredMethods():获得类的所有方法。6 days获得Class的三种方法Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。方式一:通过Class.forName(类的权限定名)获得一个Class对象:用Class的静态方法,传入类的全称即可Class? c = Class.forName(“java.lang.String”);6 days方式二:通过一个该类的对象的getClass()方法来获得Class对象:每个对象都有这个方法,获取指定实例对象的ClassString s = “aa”; Class? c = s.getClass();方式三:直接通过该类的.class文件获得Class对象:Class? c = String.class;如果该类是基本数据类型的包装类,还可以通过:Class? c = Integer.TYPEclass. getSuperclass()获取当前Class的继承类ClassList list = new ArrayList();Class listClass = list.getClass();Class superClass = listClass. getSuperclass();反射实例化对象的两种方式反射实例化对象的两种方式:平常情况我们通过new Object来生成一个类的实例,但有时候我们没法直接new,只能通过运行时反射动态生成。方式一: 先获得 Class 对象,然后通过该 Class 对象的 newInstance()方法直接生成:Class? classType = String.class

文档评论(0)

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

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

1亿VIP精品文档

相关文档