Java编程第14章-反射与注解.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文档。上传文档
查看更多
Java语言程序设计 第14章 反射与注解 14.1 类型信息 14.2 成员信息 14.3 注解 14.4 标准注解 14.5 文档注解及API文档生成 14.6 元注解 14.7 案例实践16:简易单元测试工具 第14章 反射与注解 反射 (Reflection) 是一种强大的编程技术,其能够在程序运行时动态获取、创建和修改对象,从而使得程序更具动态性——Java语言的动态性很大一部分正是由反射机制提供的。 另一方面,很多程序都需要一些描述信息才能正常工作,而这些信息往往独立于代码而被组织到单独的文件中 。如果能将这些信息以某种方式“嵌到”代码中,不仅会减少文件维护工作量,同时也可以充分利用编程语言的强制语法检查特性降低出错的可能性。 注解 (Annotation) 是从JDK 5开始支持的新特性 ,其为程序中的各种元素 (可以是包、类型、字段、构造方法、普通方法、参数、局部变量等) 提供描述信息,这些信息被称为元数据 (Metadata,即描述数据的数据)。 14.1 类型信息 Class类 每个对象都有所属的类型,Class就是用于描述类型的类——每个具体的类型 (包括类、接口、枚举、数组等) 都是Class类的实例。 Class类是整个反射API的基础,通过Class类,不仅能够获得任何具体类型的全部信息 (包括字段和方法等),而且能够动态创建新类型及该类型的对象。 API见【表14-1 】。 14.1 类型信息 获得Class对象 Class类没有提供构造方法,一般通过5种方式获取: 1. 对象名.getClass() ——【例14.1】 2. 类名.class ——【例14.2】 3. Class.forName(String className) ——【例14.3】 4. 基本类型的包装类.TYPE 5. 调用能返回Class对象的其他API 14.1 类型信息 获得Class对象 【例14.4】输出指定类的完整类名、实现的接口、继承结构等信息。 14.2 成员信息 Member接口 获得了类型信息后,往往需要对其包含的成员 (即字段、方法和构造方法等) 进行操作,这也是反射主要的表现方式。 反射包(java.lang.reflect)下定义了一个用以描述类型成员的Member接口。 API见【表14-2 】。 Member接口有3个实现类——Field、Method和Constructor。 14.2 成员信息 Field类 Field类描述了类型的字段,API见【表14-3 】。 【例14.5】通过反射机制获得并修改字段的值。 Method类 Method类描述了类型的方法,API见【表14-4 】。 【例14.6】在命令行输入要调用的方法名和实参值,输出方法返回值。 14.2 成员信息 Constructor类 Constructor类描述了类的构造方法,通过该类能够以反射方式创建给定的类的实例。 API见【表14-5 】。 构造方法是一类特殊的方法,故Constructor类也支持表14-4中的大多数API。 【例14.7】利用反射获取Date类的所有构造方法,并分别调用它们。 14.2 成员信息 反射机制能够在运行时动态获取类和对象的相关信息,使得Java程序更具动态性和可扩展性,利用反射机制甚至能编写具有API查看和代码分析能力的程序。 当然,反射也具有一些不应被忽视的缺点,主要包括: 1、性能损失。 2、受限于安全管理器定义的安全策略。 3、暴露了类中不应被访问的信息。 尽量不要用反射来实现常规编程方式能够实现的操作。 14.3 注解 注解的定义与使用 【例14.8】编写一个注解,用以描述方法代码的作者和版本信息。 14.3 注解 注解的定义与使用 1、注解实际上是一类特殊的接口,以“@interface”标识。 2、接口中的抽象方法实际上表示了注解所包含的属性。属性的类型只能是8种基本类型、String、Class、枚举、注解或这些类型对应的一维数组,且属性值必须是常量。 3、每个属性可以通过可选的default关键字指定属性的默认值。 4、属性对应的抽象方法不能带参数,也不能声明抛出异常。 14.3 注解 注解的定义与使用 【例14.9】使用【例14.8】定义的注解,为类的方法添加作者和版本信息。 14.3 注解 注解的定义与使用 1、被注解的元素称为目标元素,如第5、10行的两个方法。 2、同一注解可用于多个元素,如第5、10行的方法均使用了@Description注解。 3、一个元素可使用多个注解,如第10行的方法同时使用了@Depreca

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档