网站大量收购独家精品文档,联系QQ:2885784924

每个 Java 开发者都应该知道 几个注解_光环大数据推出AI智客计划送2000助学金.pdf

每个 Java 开发者都应该知道 几个注解_光环大数据推出AI智客计划送2000助学金.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
光环大数据--大数据培训人工智能培训 每个 Java 开发者都应该知道的 几个注解_光环大数据推出AI 智客计划送2000 助学金 自 JDK5 推出以来,注解已成为Java 生态系统不可缺少的一部分。虽然开 发者为Java 框架(例如Spring 的@Autowired)开发了无数的自定义注解,但编译 器认可的一些注解非常重要。 在本文中,我们将看到5 个Java 编译器支持的注解,并了解其期望用途。 顺便,我们将探索其创建背后的基本原理,围绕其用途的一些特质,以及正确应 用的一些例子。虽然其中有些注解比其他注解更为常见,但非初学Java 开发人 员都应该消化了解每个注解。 首先,我们将深入研究Java 中最常用的注解之一:@Override。 @Override 覆盖方法的实现或为抽象方法提供实现的能力是任何面向对象(OO)语言的 核心。由于Java 是OO 语言,具有许多常见的面向对象的抽象机制,所以在非终 极超类定义的非最终方法或接口中的任何方法(接口方法不能是最终的)都可以 被子类覆盖。虽然开始时覆盖方法看起来很简单,但是如果执行不正确,则可能 会引入许多微小的bug。例如,用覆盖类类型的单个参数覆盖Object#equals 方 法就是一种常见的错误: public class Foo { public boolean equals(Foo foo) { // Check if the supplied object is equal to this object 光环大数据 光环大数据--大数据培训人工智能培训 } } 由于所有类都隐式地从Object 类继承,Foo 类的目的是覆盖Object#equals 方法,因此Foo 可被测试是否与Java 中的任何其他对象相等。虽然我们的意图 是正确的,但我们的实现则并非如此。实际上,我们的实现根本不覆盖 Object#equals 方法。相反,我们提供了方法的重载:我们不是替换 Object 类 提供的equals 方法的实现,而是提供第二个方法来专门接受Foo 对象,而不是 Object 对象。我们的错误可以用简单实现来举例说明,该实现对所有的相等检 查都返回true,但当提供的对象被视为Object(Java 将执行的操作,例如在Java Collections Framework 即JCF 中)时,就永远不会调用它: public class Foo { public boolean equals(Foo foo) { return true; } } Object foo = new Foo(); Object identicalFoo = new Foo(); System.out.println(foo.equals(identicalFoo)); // false 这是一个非常微妙但常见的错误,可以被编译器捕获。我们的意图是覆盖 Object#equals 方法,但因为我们指定了一个类型为Foo 而不是Object 类型的 参数,所以我们实际上提供了重载的Object#equals 方法,而不是覆盖它。为了 光环大数据 光环大数据--大数据培训人工智能培训 捕获这种错误,我们引入@Override 注解,它指示编译器检查覆盖实际有没有执 行。如果没有执行有效的覆盖,则会抛出错误。因此,我们可以更新Foo 类,如 下所示: public class Foo { @Override public boolean equals(Foo foo) { return true; } } 如果我们尝试编译这个类,我们现在收到以下错误: $ javac Foo.java Foo.java:3: error: method does not overrid

您可能关注的文档

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档