由于代码很简单,我就不做说明
上述代码在jdk6下可以编译通过
而在jdk5下编译无法通过,输出的错误信息如下:
Child.java:7: 方法未覆盖其父类的方法
@Override
^
1 错误
上面的错误信息说在Child.java第七行的Override注解是不对的,不对的原因是该方法(interfaceMethod)不是父类方法。
当然,实际上这个方法是类实现的接口中方法,但是,这个语法在jdk6的下面是可以通过的,也就是说java6认为类覆盖父类方法与实现接口方法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。
差一点忘了:
标准的java api文档java5与java6对Override annotation的的解释一样的
java5:
Indicates that a method declaration is intended to
override a method declaration in a superclass. If a method is annotated with
this annotation type but does not override a superclass method, compilers are
required to generate an error message.
java6:
Indicates that a method declaration is intended to
override a method declaration in a superclass. If a method is annotated with
this annotation type but does not override a superclass method, compilers are
required to generate an error message.
两段说明一模一样,让人搞不清楚的是java6文档没有提到Override对interface的支持。
在Eclipse或MyEclipse中开发时,尽管使用JDK的版本是JDK1.6,上面的代码还是会通不过编译的,因为你在建工程时,Eclipse默认的编译器使用的是1.4或者1.5,所以你要把编译器的版本修改为1.6才行,MyEclipse是设置成6.0,其实就是1.6Eclipse中的1.6.
相关推荐
现象: … 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 ...
本文将详细介绍 `Override` 错误的成因及其解决方案,并通过具体的实例帮助读者更好地理解和处理这类问题。 #### 二、`Override` 错误产生的原因 1. **JDK 版本不兼容**: - 早期版本的 JDK(如 JDK 5)存在一些 ...
在Java编程语言中,"The method of type must override a superclass method" 是一个常见的错误提示,它通常出现在子类试图重写父类方法时,但没有按照正确的格式进行。这个错误通常与多态性和继承概念有关,是理解...
在这个Java实现中,我们将探讨如何使用设计模式来解决鸭子问题。 首先,我们有一个抽象的`鸭子`接口或抽象类,它定义了所有鸭子都应具备的行为,如`quack()`(嘎嘎叫)和`fly()`(飞行)。这样的设计使得我们可以为...
这个“关于适用于核心 Java、Android 的基于 PubNub Java 的 API”主题涵盖了如何在 Java 和 Android 开发环境中使用 PubNub API 的关键知识点。 首先,我们要理解 PubNub 的工作原理。它是一个基于发布/订阅模型的...
通过以上步骤,你不仅可以掌握DialogFragment的基本使用,还能了解到如何利用自定义接口处理点击事件,并解决因屏幕旋转导致的事件失效问题。在实际项目中,这些知识将帮助你构建更稳定、更健壮的Android应用。
9 Java @override报错的解决方法 10 js实现 选中子页面的checkbox,点击确认,将选中的数据显示到父页面 11 解析oracle的rownum 12 ava web项目中开放一个webservice接口实例 13 js方式实现 系统时间显示 14 js 按...
问题的由来 在 Spring Boot 之前,我们通常继承 WebMvcConfigurerAdapter 来实现 URL 的定向。例如,我们可以通过重写 addViewControllers 方法来添加视图控制器,或者通过重写 addInterceptors 方法来添加拦截器。...
本示例将深入探讨这个问题,并提供解决方案。 首先,我们需要理解Android的生命周期。当设备旋转时,由于配置改变(如屏幕方向变化),系统会默认销毁当前Activity及其所有的`Fragment`。为了解决状态丢失问题,...
Spring Boot 中接口多实现类的...本文介绍了四种解决 Spring Boot 中接口多实现类的选择性注入问题的方案,包括两种相对低级的解决方案和两种相对高级的解决方案。开发者可以根据自己的实际需求选择合适的解决方案。
Java设计模式是面向对象编程中的重要概念,它们是解决常见问题的经验总结,为代码的可重用性、可维护性和可扩展性提供了指导。这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory ...
4. **解决乱码问题**:通过设置响应输出流的字符集编码来避免乱码。 #### 三、具体实现细节 ##### 1. 封装`HttpServletRequest` - 实现`HttpServletRequestWrapper`子类,重写`getReader()`和`getInputStream()`...
在软件设计模式中,工厂模式是一种非常基础且实用的设计模式,它主要用来解决对象创建的问题。工厂模式的主要目的是封装对象的创建过程,使得代码在不指定具体类的情况下创建对象。根据描述,我们将深入探讨Java中的...
抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建一系列相关或相互依赖的对象时,而这些对象的类可能在运行时未知,这时可以通过抽象工厂模式来提供一个创建对象的接口,使得系统可以...
设计模式是软件工程中的一种最佳实践,它提供了解决常见问题的标准模板。中介模式(Mediator Pattern)属于行为设计模式,它旨在降低多个对象之间的复杂交互,通过引入一个中介对象来封装原本复杂的网状结构,使得...
为了解决这个问题,我们可以使用枚举来实现策略模式。例如: ```java public enum Strategy { FAST { @Override void run() { // do something } }, NORMAL { @Override void run() { // do something } ...
解决Java乱码问题通常有以下几种方法: 1. 文件读写时指定编码:使用`FileReader`和`FileWriter`时,可以通过传递`Charset`对象来指定编码。例如: ```java FileReader reader = new FileReader("file.txt", ...
### 浅析Java设计模式【2】——适配器 #### 概念解析 适配器模式是一种常用的设计模式,其核心在于“适配”二字,即如何将...开发者可以根据实际需求选择合适的适配器模式来解决问题,从而提高代码的复用性和灵活性。