【代码优化】坚持使用Override注解
对于传统程序猿,注解里面最重要的就是Override注解了。这里的注解,都是指仅仅能用在方法中的声明,
她表示被注解的方法用于覆盖了父类的一个声明,假设坚持使用这个注解,能够防止一大类的非法错误。
<span style="font-size:14px;">public class Bigram{
private final char first;
private final char second;
public Bigram (char first ,char second){
this.first=first;
this.second=second;
}
public boolean equals(Bigram b){
return b.first==first && b.second==second;
}
public int hashCode(){
return 31*first+second;
}
public static void main (String args[]){
.....
s.add(new Bigram(ch,ch));
}
}</span>
这段代码得到的不是我们想要的结果,原因在于Bigram类创建者原本想要覆盖equals方法,同一时候覆盖hashCode方法
可是却不幸的重载了equals方法,(equals必须參数传入Object类),这个equals方法測试对象的同一性,就像==
操作符一样了。这就是得不到想要结果的原因。
要是我们在写代码时候加上Override重载父类方法标示,就能够避免这类型的错误了。
在如今的IDE中都提供了Override注解检查功能,这就能够让你在编译时候就会发现这种方法是有问题的。
<span style="font-size:14px;"> public boolean equals(Bigram b){
return b.first==first && b.second==second;
}</span>
总之,记得使用Override注解,编译器会帮你防止大量的错误,但有一个例外。在详细类中,不必要标注
你确定要覆盖的抽象方法声明的方法。
【代码优化】坚持使用Override注解的更多相关文章
- eclipse @override注解出错
在工程中新建了一个接口,定义了一个methodA,然后写一个接口类实现该方法,并加上@override注解 项目提示@override出错,必须覆盖原方法XXX,解决办法 1)项目右键-project ...
- 关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.
遇到这个问题说来也怪.新开了一个path的工作空间用来打patch.该Eclipse的默认全局的编译版本是1.6.但是唯独其中的一个插件项目的版本是1.5(可能是唯一的一个,不确定,不知道为什么会是这 ...
- 第36条:坚持使用Override注解
@Override 注解只能用在方法声明中,表示被注解的方法声明覆盖了超类型中的一个声明. @Target(ElementType.METHOD) @Retention(RetentionPolicy ...
- Effective Java 第三版——40. 始终使用Override注解
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Java @Override 注解
@Override注解,不是关键字,但可以当关键字使用,可以选择添加这个注解,在你不留心重载而并非复写了该方法时,编译器就会产生一条错误:The method doh(Milhouse) of typ ...
- eclipse编译项目:Java @Override 注解报错的解决方法
错误: 在 eclipse 的新工作空间开发项目时,出现大面积方法编译错误.鼠标放在方法名上后显示让我们去掉 @override 注解,如图: 原因: @Override 是 jdk5 引入的机制,但 ...
- @Override注解在Eclipse中编译报错
导入新工程后,发现默认用的jre是1.5版本的,在Eclipse中右击工程选择Build Path->点击Configure Build Path->Java Build Path-> ...
- 在接口的实现类里使用@Override注解报错
问题分析 @Override注解用来检测子类对父类或接口的方法的重写是否正确,但有一次我在Eclipse里对接口的实现类里使用@Override注解却报错,不过在父类的子类里使用该注解却是正常的. 百 ...
- @Override注解
@Override注解对于代码可读性的提升十分巨大 而且良好的可读性是一个优秀程序员必备的基础素养
随机推荐
- apache开源项目--gora
Gora 是一个应用于 NoSQL 数据库的 ORM 框架,支持包括:Apache HBase/Apache Cassandra
- 【转】objective-c基本数据类型之输出格式符
原文网址:http://blog.csdn.net/mamong/article/details/8255691 基本数据类型 1. int 输出格式符:%i, %d, %o %x, 2. float ...
- XML常用颜色值
<?xml version="1.0" encoding="utf-8" ?> <resources> <color name=& ...
- Maximum Flow Exhaustion of Paths Algorithm
参考youtube上的视频: http://www.youtube.com/watch?v=sxyCzzUuXLo 笔记: 只要是那条路上为0后,就不会再走那条路. 所以没有S->U->W ...
- [codevs1287]矩阵乘法
题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容.当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的.小明希 ...
- vs2010常用快捷方式
1.注释 直接打三个"///"就会出现 /// <summary> ///非方法体上 /// </summary> MusicStoreEntities s ...
- nyoj 84阶乘后0的个数
描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) ...
- HW3.6
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- poj1149--PIGS(最大流)
题意: 有m个猪圈 每个猪圈有不同数量的猪 [0, 1000]有n个顾客 每个顾客需要Bi头猪 有Ai个钥匙 能打开Ai个不同的猪圈顾客按顺序来买猪 只能买他有钥匙的猪 买完之后 这几个猪圈的猪可以相 ...
- HDU 1102 Constructing Roads (最小生成树)
最小生成树模板(嗯……在kuangbin模板里面抄的……) 最小生成树(prim) /** Prim求MST * 耗费矩阵cost[][],标号从0开始,0~n-1 * 返回最小生成树的权值,返回-1 ...