极速彩源码搭建步骤 Java 开发者都应该知道的 5 个注解

自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分。虽然开发者为Java框架(例如Spring的@Autowired)开发了无数的自定义注解,但编译器认可的一些注解非常重要。

在本文中,极速彩源码搭建bbs.yasewl.com我们将看到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 {br/>@Override
public boolean equals(Foo foo) {
return true;
}
}
如果我们尝试编译这个类,我们现在收到以下错误:

$ javac Foo.java
Foo.java:3: error: method does not override or implement a method from a supertypebr/>@Override
^
1 error
实质上,我们已经将我们已经覆盖方法的这一隐含的假设转变为由编译器进行的显性验证。如果我们的意图被错误地实现,那么Java编译器会发出一个错误——不允许我们不正确实现的代码被成功编译。通常,如果以下任一条件不满足,则Java编译器将针对使用@Override注解的方法发出错误

极速彩源码搭建步骤 Java 开发者都应该知道的 5 个注解

原文地址:http://blog.51cto.com/13849762/2135361

时间: 2024-10-10 12:25:48

极速彩源码搭建步骤 Java 开发者都应该知道的 5 个注解的相关文章

凤凰大厅源码代理每个程序员都该知道的 5 个定律

定律或称法则,可以指导我们并让我们在同伴的错误中学习.凤凰大厅源码代理(h5.hxforum.com)联系方式170618633533企鹅2952777280 (http://yhgj8004.com) 源码出售 房卡出售 后台出租有意者私聊扣扣 这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的 5 个定律.其中有些和开发有关,有些和系统组织有关.它们可以帮助你成为合格的软件工程师. 墨菲定律 "凡事可能出错,就一定出错."这条定律来源于 Edward Murphy -- 一名

Java实现两分彩源码搭建操作

一:两分彩源码搭建介绍:企 娥:217 1793 408 为了避免插入和删除的线性开销,就需要保证表可以不连续存储,否则表的每部分可能都需要整体移动.Java语言中包含一些普通数据结构的实现,这部分叫做Collections API. Collections API位于java.util包中,collection接口要注意它扩展了Iterable接口,实现Iterable接口的集合必须提供一个称为iterator的方法,迭代器可以实现循环遍历.List接口继承了Collection接口. 线性时

Java加密杏彩源码搭建出售加签算法到php的坑

写代码的经历中,总少不了与外部的程序对接,一旦有这样的事,往往周期会很长,很麻烦,因为你要考虑的事会多了很多,其中安全性的加密解密就是重要的一项.写代码,可以出Bug,但逼格不能弱.什么是逼格?和别人对接一下,连加密解密都没有,连验证签名都没有,别人一眼就望穿你,这就是眼界的问题了. 这次的故事是对接一个大的支付系统,对方也是第一个对接我们,然后定了接口和加解密算法,给了个Java的Demo,问了声,有没有PHP的,没有,歇菜,自己来吧. 代码说多不多,说少不少,为了先说事,代码放在最后面. 第

JAVA数据杏彩源码搭建出售结构之链表

链表应该是继数组之后应用最广的通用存储结构,链表的机制灵活,用途广泛,适用于许多通用的数据库,也可取代数组作为其他的存储结构的基础,如栈和队列,除非需要频繁地通过下标访问数据,否则在很多使用数组的地方都可以使用链表来代替. 接下来本篇博文会讲解到单链表,双端链表,有序链表,双向链表,和有迭代器的链表.(迭代器是用来随机访问链表元素的一种方法) 链表的实现一般需要用到两个类,链表对象(包含对第一个链表节点的引用),链表节点(所有保存的数据,和对下一个链表节点的引用).这种 方式可以称作自引式,由于

五分彩源码搭建与机器学习

框架介绍 1.Apache Singa 是一个用于在大型数据集上训练深度学习的通用分布式深度学习平台,它是基于分层抽象的简单开发模型设计的. 五分彩源码搭建 QQ:2152876294 网址diguaym.com 它还支持各种当前流行的深度学习模型,有前馈模型(卷积神经网络,CNN),能量模型(受限玻尔兹曼机,RBM和循环神经网络,RNN),还为用户提供了许多内嵌层. 2.Amazon Machine Learning(AML)是一种让各种级别使用机器学习技术的开发人员可轻松掌握的一个服务,提供

mysql环境下分分彩源码搭建的操作

首先打开分分彩源码搭建数据库(Linux):service mysql start(关闭数据库 service mysql stop)企 娥:217 1793 408window下:net start mysql 然后输入密码:mysql -uroot -p密码 进入mysql后开始操作1.数据库的相关操作 查看所有的数据库 show databases;创建数据库 create database 数据库名;删除数据库 drop database 数据库名:mysql数据库的名称在黑窗口下是无法

logback的使用和五分彩源码搭建详解

一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件. logback-core:其它两个模块的基础模块:五分彩源码搭建,企 娥:217 1793 408 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能 二.logback取代log4j的理由: 1

杏彩源码搭建与安装linux系统

2.安装linux系统: 预备知识 杏彩源码搭建QQ:2152876294 网址diguaym.com文件系统:文件数据在空间中排列组合的规则 1)硬盘:物理硬盘---->分区规划---->格式化---->读/写文档 毛胚楼层---->打隔断 ---->装修---->入住 2)如何使用硬盘: 传统的MBR(Master Boot Record)分区模式 1-4个主分区 或者 0-3个主分区+1个扩展分区(n个逻辑分区) ? 注意事项 – MBR分区表只能记录4个主分区,

菠菜源码搭建与java基础概念

1.java jvm的功能:通过 ClassLoader 寻找和装载 class 文件?? ??? ??? ?? 解释字节码成为指令并执行,提供 class 文件的运行环境?? ??? ??? ?? 进行运行期间垃圾回收 菠菜源码搭建QQ:2152876294 网址diguaym.com?? ??? ??? ?? 提供与硬件交互的平台?? ?2.运算符优先级:单目 >运算>移位>比较>按位>逻辑>三目 >赋值?? ??? ??? ?单目:单目运算符+ –(负数)