- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
简单有简单的优点,但也有缺点,那就是instanceof关键字只对类型进行判断,无法获取对象的其他属性信息。在某些复杂场景下,instanceof的单一性功能非常局限,不如其他方式有效。具体的使用,读者可以根据具体情况去取舍。了解了运行时类型识别,Java的反射就很好理解了。Java中的反射就是利用Class类来进行一系列的操作,相较于RTTI的简单载入功能,Java的反射可以做更多的事情。为了理解反射能做什么,先给出一个简单的反射案例。案例9-5Java的String类的反射运行结果如图9-5所示。图9-5运行结果9.1.2反射的应用反射应用最广泛的场景是依赖注入,这个特性在Spring中非常实用。在一些基础构架中,反射也是被应用得最普遍的Java技术之一。Java中与反射有关的类都放在了java.lang.reflect包中,其中有3个类最为重要,即Field、Method和Constructor,它们分别用来描述类的成员属性(域)、方法和构造器。这3个类都有一个getName()方法,可以返回各自对应条目的名称。案例9-6获取类的构造方法运行结果如图9-6所示。图9-6运行结果案例9-7使用反射创建一个类的对象运行结果如图9-7所示。图9-7运行结果实际的应用场景会比这个复杂,因为你可能只知道类名,但不知道参数列表的类型和个数,此时就需要对参数列表进行判断和组装,其对应的参数列表也需要动态地创建和组装。Java类一般都会有构造函数、成员属性和成员方法。在一些情况下,需要查看一个类的成员属性。案例9-8获取类中的成员属性运行结果如图9-8所示。图9-8运行结果获取成员属性的方式同获取构造方法的方式相类似,此处多使用了一个新事物:Modifier。它也是一个reflection类,用来描述字段的修饰符,如public和private等。这些修饰符本身使用整型描述,其使用toString()方法会返回以Java官方顺序排列的字符串,如static会在final前面,而static又会在访问修饰符后面。成员属性也可以被修改。运行时的修改是根据名称找到对象的成员变量并修改。案例9-9改变成员变量的值运行结果如图9-9所示。图9-9运行结果属性的修改非常简单,基本类型都有对应的设置方法,当设置完成之后就会生效。但是首先需要创建一个该类型的对象用于接收修改。Java还提供了对成员方法的获取。成员方法的获取同构造函数、成员属性类型,都由Class对象去获取。案例9-10获取类的方法运行结果如图9-10所示。图9-10运行结果需要注意的是,getDeclaredMethods()并不能获取父类的方法,可以使用getMethods()方法来代替。但是该方法是只能获取所有的public类型的方法。获取类的方法之后可以根据方法名称来执行方法。案例9-11执行类的方法运行结果如图9-11所示。图9-11运行结果本案例中调用了两个方法。首先,因为Java类会在类中没有声明构造方法的时候自动为类创建一个无参的构造函数,所以,首先使用newInstance()方法创建一个该类型的对象;其次,因为本次调用了两个方法,所以使用Class的getMethod()方法分别获取了setName()方法和getName()方法;最后,调用setName()方法,给类的name成员属性赋值为“MyName”,然后使用getName()方法获取该值。Java的反射本质就是在程序的运行过程中,动态地创建对象并调用其方法或者修改其属性等,只要了解其最基本的使用方式,就可以根据需求和规则进行更加丰富的反射应用。9.2异常Java的自动垃圾回收机制解放了程序员,让程序员不再为莫名奇妙的内存溢出而焦头烂额。Java的异常机制则极大地方便了程序员对错误的处理,异常信息可以指向错误的来源处,让程序员可以快速地定位错误的位置并缩小异常代码范围,大大提升了程序员的开发效率。9.2.1概念Java的异常处理是面向对象的,也就是可以将异常当作对象来处理。当程序运行过程中出现了异常情况时,一个异常就产生了并交给运行时系统,运行时系统通过寻找对应的代码来处理这个异常,从而确保系统不会宕机或对操作系统造成损害。在Java程序中,当异常出现时,就会创建代表该异常的一个对象,并在出现错误的地方抛出。异常的类型有两种,一种是运行时系统自己产
您可能关注的文档
- 中文版Flash CC从入门到精通实用教程(微课版)全套PPT课件.ppt
- 路由交换技术与实践_全套PPT课件.pptx
- 电气控制与PLC应用(第4版)全套PPT课件.ppt
- 网络规划与设计实用教程全套PPT课件.pptx
- 计算机组装与维护项目教程(第2版)全套PPT课件.ppt
- 外贸单证实务(第2版)全套PPT课件.pptx
- 局域网组建与维护项目式教程(第3版)全套PPT课件.ppt
- 信息安全技术(HCIA-Security)全套PPT课件.pptx
- 路由与交换技术_全套PPT课件.ppt
- Spark大数据技术与应用_全套PPT课件.pptx
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
文档评论(0)