@Override注解用于方法的覆写上,它在编译期有效,也就是Java编译器在编译时会根据该注解检查是否真的是覆写,如果不是就报错,拒绝编译。
该注解很大程度解决我们的误写问题,比如子类和父类的方法名少写一个字符,或者是数字0和字母O未区分出来等,这基本上是每个程序员都曾犯过的错误。在代码中加上@Override注解基本上可以杜绝出现此类问题。
但是@Override有个版本问题,我们来看看如下代码:
interface Foo{
public void doSomething();
}
class Impl implements Foo{
@Override
public void doSomething(){
}
}
这段代码在Java1.6版本上编译没有任何问题,虽然doSomething方法只是实现了接口定义,严格来说并不能算是覆写,但@Override出现在这里可以减少代码中可能出现的错误。
可是在Java1.5版本上编译此段代码,就会出现如下错误:
the methoddoSomething()
of typeimplmust
override a superclass method Client.java
注意,这个错误,不能继续编译。原因是1.5版本中@Override是严格遵守覆写的定义:子类方法与父类方法必须具有相同的方法名、输入参数、输出参数(允许子类缩小)、访问权限(允许子类扩大)、父类必须是一个类、不能是一个接口、否则不能算是覆写。
而在Java1.6就开放很多,实现接口的方法也可以加上@Override注解了,可以避免粗心大意导致方法名称与接口不一致的情况发生。
在多环境部署应用时,需要考虑@Override在不同版本下代表的意义,如果是Java1.6版本的程序移植到1.5版本环境中,就需要删除实现接口方法上的@Override注解。
分享到:
相关推荐
现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...
对Java中@override个人理解阐述,希望能帮大家更好理解。
很好很好的Java知识,一个关于Java标签的技术知识,非常的好用哦
主要介绍了详解Java中@Override的作用的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
Delphi面向对象:overload与override[文].pdf
java代码-Override
默认注解:@Deprecated @Override ... 自定义注解:public @interface FirstAnno {} #@interface 元注解:加在自定义注解的类接口上 @Retention(RetentionPolicy.RUNTIME ) SOURCE 给编译器看的# 源码存在,字节码不...
@Override public void getCity(final String name) { textView.setText(name); } 处理返回键: @Override public void onBackPressed() { if (cityPicker.isShow()){ cityPicker.close(); return; } ...
使用Eclipse 进行项目开发,在实现类中的方法前面如果添加@Override就提示“Multiple markers at this line”的错误,问题
Java在线计算器源代码 Java简易计算器源代码 Java创建界面的计算器源代码 部分代码如下: …… …… panel.setLayout(new GridLayout(4,4,1,1)); for(int i=0;i;i++) { JButton button = new JButton(name[i]); ...
java用填充多边形的方法填充一个三角形 主要代码: Icon icon = new Icon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; ...
java.util竟然没有提供树(数据结构)的实现!让我这种拿来主义的懒人很不开心。 随手写了一个TreeNode,顺道实现了个对应的内存缓存框架,适用于数据量不大,更新也少但是反复要读的数据,比如模块信息/组织结构/...
帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 代码块 4 代码块使用注意事项和细节 5 单例模式 6 final...
最新版本号(VERSION_CODE)在这里。 用法 基本用法: 在xml文件中使用: 代码控制事件: playPauseView.setPlayPauseListener(new PlayPauseView.PlayPauseListener() { @Override public void play() {
java package com.myunit; import testapi.ITestAgent.TestLog; @TestClass public abstract class ITestFixture extends MyAssert implements ISubject { IObserver iobs = null; public ITestFixture() { } ...
1,把DirectionControlView.java拷贝到你的工程里,布局文件中直接使用: 2,找到DirectionControlView对象,设置状态监听。 mDirectionControlView = (DirectionControlView) findViewById(R.id.main_dcv); ...
警告:该库是使用规范制作的,而不是以重大方式发生重大变化的最新版本(stage-2)。 因此,它曾经并且仍然是高度实验性的,在这一点上最好避免。 如果/当装饰器规范成为第三阶段,并且至少一个JS编译器支持该规范时...
java代码-Override2