- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用预先编写的接口(interface)编写队列类。接口(interface)包含方法
public void enqueue(T element);
我的类(class)看起来像
import java.util.ArrayList;
public class Queue<T> implements QueueInterface {
ArrayList<T> list = new ArrayList<>();
public void enqueue(T element){
list.add(element);
}
}
目前,这导致类生成一个错误,说明它需要实现 enqueue 方法,覆盖语句生成一个错误,说明该方法没有覆盖我接口(interface)中的方法,以及我类中的方法声明,没有覆盖,说它与接口(interface)的方法冲突。
最佳答案
根据您提供的代码,有 2 个错误和 1 个警告。
警告 1:
QueueInterface is a raw type. References to generic type QueueInterface should be parameterized
错误 1:
The type Queue must implement the inherited abstract method QueueInterface.enqueue(Object)
错误 2:
Name clash: The method enqueue(T) of type Queue has the same erasure as enqueue(Object) of type QueueInterface but does not override it
警告 1 告诉您应该指定 QueueInterface
的泛型类型.如果不指定类型参数,编译器将假定您正在实现类似 QueueInterface<Object>
(不完全见引用文献1)。因此您会看到错误 1,因为没有方法实现/覆盖 enqueue(Object)
在Queue
.
那为什么不能enqueue(T)
覆盖 enqueue(Object)
?添加时 @Override
对 enqueue(T element)
的注释方法,另一个错误将显示:
The method enqueue(T) of type Queue must override or implement a supertype method
这是因为 enqueue(T)
是泛型方法,T 可以是任何类型。例如,如果我们声明
Queue<String> stringQueue = new Queue<String>();
Queue<Integer> integerQueue = new Queue<Integer>();
然后enqueue
stringQueue
的方法|和 integerQueue
接受 String
和 Integer
分别不能接受 Object
作为参数,因此不能覆盖 enqueue(Object)
.
最后是 Error 2
,这很令人困惑,因为它说 enqueue(T)
与 enqueue(Object)
相撞,但是 enqueue(T)
不会覆盖 enqueue(Object)
.这两种方法因为 erasure 而冲突.这意味着在运行时,所有T
被 Object
取代.在这种情况下,程序将不知道要执行哪个方法。详见引用文献 2。
1. What is a raw type and why shouldn't we use it? (关于原始类型和相关内容的优秀问答)
关于java - @Override 声称 Method 没有覆盖,但是 method 说它与父方法冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53310568/
我正在尝试解决为什么 Ruby 没有用空格分割我的字符串。例如: [1] pry(#)> msg => "!iex [email protected]|[email protected]> Firs
我正在尝试解决为什么 Ruby 没有用空格分割我的字符串。例如: [1] pry(#)> msg => "!iex [email protected]|[email protected]> Firs
这是我的 API 端点: [HttpPost] public int Post(SearchHistory searchHistory) { IDashboardRepository dash
我正在按照these guidelines验证来自Facebook API的signed_request参数。 ,但我在调用 Commons Codec 中的 Base64 类的某些方法时遇到了问题。
我有一个 json 结构数组: { data : [ { "num" : val , "time" : val } , ... ] } 我需要找到 num 的最大值和最短/最长时间,以及将对象移动到
我使用 Xcode 的 Refactor > Rename 命令尝试重命名 C 中的方法参数 this。 它声称 this 是“保留语言关键字”,但据我所知,事实并非如此。 这是 Xcode 中的错误
有人刚刚给我看了 A byte of Python 的旧 PDF 版本.根据本身,它是 3.0 版(本书的,而不是 Python 的),从 2014 年开始。在 Operators 部分, 有一个部分
问题: 您在 Intellij 中使用 VCS 系统并尝试提交内容。提交失败,Intellij 声称 index.lock 存在。你检查你的 repo 目录中的 .git/index.lock,发现它
我有以下 SAM 模板: AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Descriptio
这可能看起来微不足道,但我使用 Excel 来操作程序中的一些数据,然后以 tsv 格式输出数据。我想用 gnuplot 来绘制它,其复杂性不比 plot "filename" 复杂,但 gnuplo
我正在使用嵌入式 Jetty 启动标准 Java 网络应用程序。我的启动器是这样的: import org.eclipse.jetty.server.Server; import org.eclips
我正在阅读 Joshua Bloch 的 Effective Java,第 2 版,第 11 条:明智地覆盖克隆。 在第 56 页,他试图解释当我们重写某些类(如集合类)的 clone() 时,我们必
问题: 如 Fusion Location Provider API 所声称的,位置更新在室内不起作用。 发生了什么: 我尝试在我的 Android 应用程序中使用 LocationClient 实现
所以我只是尝试使用 NDK 构建一个库。我相信 Android.mk 和 Application.mk 文件是正确的,但它们是否正确无关紧要。 在NDK目录下执行make APP=hello时 And
我在 Android Studio 中尝试为我的模拟器安装 HAXM 时遇到了困难。我有一台 hp2000 笔记本;我将 Windows 8.1 更新到 Windows 8.1 Pro 以激活 Hyp
在我的程序中,我正在下载 misc。 PDF 文档,最后我想使用 Apache pdfbox (v1.8.8) 将它们合并到一个组合文档中。出于某种奇怪的原因,PDFMergerUtility 未能声
我正在尝试使用预先编写的接口(interface)编写队列类。接口(interface)包含方法 public void enqueue(T element); 我的类(class)看起来像 impo
有这样的东西: $(document).ready(function() { $("#myTable").dataTable({
我最近将一个 Android 应用程序从 Eclipse 移植到 Android Studio。我能够调试应用程序,甚至能够构建一个供客户端测试的发布版本。不幸的是,我不能再调试了。当我尝试从 And
每次,我在 Gerrit 中看到我的更改的 merged 状态并且我执行 git pull origin,我可以清楚地看到,我的更改/分支实际上没有已 merge 到 master 中。 请检查我的
我是一名优秀的程序员,十分优秀!