【代码优化】坚持使用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注解,布布扣,bubuko.com

时间: 2024-10-11 18:15:34

【代码优化】坚持使用Override注解的相关文章

@Override注解

它的作用是对覆盖超类中方法的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告. /** * 测试Override注解 * @author Administrator */ public class OverrideDemoTest { //@Override public String tostring() { return "测试注解"; } }

第36条:坚持使用Override注解

@Override 注解只能用在方法声明中,表示被注解的方法声明覆盖了超类型中的一个声明. @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } @Target指定注解只作用在方法 @Retention指定注解在编译的时候会被丢弃 应该在想要覆盖超类声明的每个方法声明中使用Override注解,这样当想要覆盖的方法没有被覆盖时,编译器能提示错误,大大减少方法覆盖失

学习笔记---使用override注解

在学习或者做东西,都懒得动手记,得习惯记下来才好... 最近在看<Effective Java>,确实对我有很大的提高,把自己看到和想到的东西写下来,标记... 1. 坚持使用override注解. 1 public class Bigram { 2 3 private final char first; 4 private final char second; 5 public Bigram(char first,char second) { 6 this.first = first; 7

@Override注解在Eclipse中编译报错

导入新工程后,发现默认用的jre是1.5版本的,在Eclipse中右击工程选择Build Path->点击Configure Build Path->Java Build Path->点击JRE System Library后点击Edit->jdk1.8版本,点击Finish,点击OK. 但发现工程里有个java文件有红叉叉,提示要移除Override注解.这个问题是jdk1.5版本才有,1.6版本以上已经解决.在Eclipse中右击工程选择Build Path->Confi

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

问题分析 @Override注解用来检测子类对父类或接口的方法的重写是否正确,但有一次我在Eclipse里对接口的实现类里使用@Override注解却报错,不过在父类的子类里使用该注解却是正常的. 百度了下才知道原来这是jdk1.5时的一个bug,在1.6时已经被修复:那么问题来了,我使用的jdk是1.8,为什么会报这个错误?明明之前也在接口的实现类里用过该注解,却没问题.由于Eclipse经常抽风,我怀疑是Eclipse的问题,经过排查确实如此,该项目使用的jdk版本不知道为什么变成了jdk1

@Override注解的使用

先看看@Override注解在Java SE中的声明: package .lang; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } 由Java源代码声明我们了解到:@Override注解,只能用于标记方法,并且它只在编译期生效,不会保留在class文件中. @Override注解标记的方法声明,

java.lang.Override注解

@Override注解的作用 当你想重写父类的某个方法时,它可以帮你检查方法的正确性. 举例说明 比如说我们重写父类的toString()方法,但我们现在将toString这个方法名拼错了,这是它会在IDE中发出一个警告,告诉我们该方法名拼写有问题,也或者是该方法的类型与父类对应的方法类型不匹配,也是会发出警告的. 原文地址:https://www.cnblogs.com/youpeng/p/11505129.html

接口的实现类不支持@Override注解,提示移除

写了一个接口的实现类,在方法的前面加了@Override居然报错了,要求移除这个注解.据说这个是JDK的版本问题,@Override在JDK5就已经有了,但是有一个小小的BUG就是不支持对接口的实现,认为这不是Override而JDK6修正了这个BUG,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override. 首先要确保安装jdk1.6,然后在eclispe中修改配置,在windows->preferences->java->complier->compiler com

Java魔法堂:注解用法详解——@Override

一.前言 现在有Son和Parent两个类,且类型Son将会重写类型Parent的getName函数.但不幸的是由于码农大意,写成如下代码: public class Parent{ public String getName(){ return "Parent"; } } public class Son extends Parent{ public String getNames(){ return "Son"; } } 上述代码编译通过且人工无意识到实现错误,