对于传统程序猿,注解里面最重要的就是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注解的更多相关文章

  1. eclipse @override注解出错

    在工程中新建了一个接口,定义了一个methodA,然后写一个接口类实现该方法,并加上@override注解 项目提示@override出错,必须覆盖原方法XXX,解决办法 1)项目右键-project ...

  2. 关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.

    遇到这个问题说来也怪.新开了一个path的工作空间用来打patch.该Eclipse的默认全局的编译版本是1.6.但是唯独其中的一个插件项目的版本是1.5(可能是唯一的一个,不确定,不知道为什么会是这 ...

  3. 第36条:坚持使用Override注解

    @Override 注解只能用在方法声明中,表示被注解的方法声明覆盖了超类型中的一个声明. @Target(ElementType.METHOD) @Retention(RetentionPolicy ...

  4. Effective Java 第三版——40. 始终使用Override注解

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. Java @Override 注解

    @Override注解,不是关键字,但可以当关键字使用,可以选择添加这个注解,在你不留心重载而并非复写了该方法时,编译器就会产生一条错误:The method doh(Milhouse) of typ ...

  6. eclipse编译项目:Java @Override 注解报错的解决方法

    错误: 在 eclipse 的新工作空间开发项目时,出现大面积方法编译错误.鼠标放在方法名上后显示让我们去掉 @override 注解,如图: 原因: @Override 是 jdk5 引入的机制,但 ...

  7. @Override注解在Eclipse中编译报错

    导入新工程后,发现默认用的jre是1.5版本的,在Eclipse中右击工程选择Build Path->点击Configure Build Path->Java Build Path-> ...

  8. 在接口的实现类里使用@Override注解报错

    问题分析 @Override注解用来检测子类对父类或接口的方法的重写是否正确,但有一次我在Eclipse里对接口的实现类里使用@Override注解却报错,不过在父类的子类里使用该注解却是正常的. 百 ...

  9. @Override注解

    @Override注解对于代码可读性的提升十分巨大 而且良好的可读性是一个优秀程序员必备的基础素养

随机推荐

  1. Form.KeyPreview 属性

    Form.KeyPreview 属性 今天再做KeyDown 和 KeyUp 事件时,就是忘了设置,窗体的KeyPreview 属性,所以KeyDown 和 KeyUp 事件没有反应(这里说明一下,本 ...

  2. FORM - 实现某数据项自动按记录序号加一操作

    ---- 设块名为VO,要操作的数据项为VO_ID,在该块中建立块级触发子WHEN-CREATE- RECORD,每当生成新记录时VO_ID就会自动加一了,加入如下代码: :VO_ID:=:Syste ...

  3. openssl的CRYPTO_set_locking_callback

    openssl可以在多线程环境下使用,但前提是向openssl提供线程锁设施,通过CRYPTO_set_locking_callback设置. 在一些复杂软件环境环境中,可能存在多个上层模块同时使用o ...

  4. 一个不错的php图片处理类EasyPhpThumbnail Class

    EasyPhpThumbnail Class   EasyPhpThumbnail Class用于处理图片操作和生成缩略图.支持GIF.JPG和PNG三种格式. 提供的功能包括:Resize.剪切.旋 ...

  5. windows log

    http://technet.microsoft.com/zh-CN/sysinternals http://technet.microsoft.com/en-us/sysinternals/bb89 ...

  6. hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 ...

  7. 常用的MAVEN公共私服

    flex-mojo http://repository.sonatype.org/content/groups/flexgroup flex相关 http://nexus.5amsolutions.c ...

  8. 跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-IC引脚测量 Lead Measurement: Example for the application of the measure object in ...

  9. Unity3d 巫师3Ciri的渲染

    --wolf96 16/10/6

  10. RTCP

    RTCP RTCP协议将控制包周期发送给所有连接者,应用与数据包相同的分发机制.低层协议提供数据与控制包的复用,如使用单独的UDP端口号.RTCP执行下列四大功能: (1) 主要是提供数据发布的质量反 ...