- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试创建实现另一个通用接口(interface)的接口(interface):
public interface MinMax implements Comparable<T> {
}
但是在 T
上我得到错误无法解析符号 T
。
所以我尝试了这个语法:
public interface MinMax <T extends Comparable> {
}
成功了,上面的语法没有任何错误。
我不明白为什么我应该使用 extends 而不是 implements 而 comparable 是接口(interface)。
最佳答案
在您的第一个片段中,您尝试使用通用类型变量 T
无需先声明。你也不能说接口(interface) implements
另一个接口(interface)(只有一个类可以实现一个接口(interface))。相反,一个接口(interface)可以扩展另一个接口(interface)。
你可以声明它:
public interface MinMax<T> extends Comparable<T> {
}
这意味着接口(interface) MinMax
有一个名为 T
的泛型类型参数接口(interface)扩展了Comparable<T>
接口(interface)(这意味着 MinMax
接口(interface)的任何实现都必须实现 public int compareTo(T o);
方法)。
你的第二个片段
public interface MinMax <T extends Comparable> {
}
有不同的含义。这里MinMax
还有一个名为 T
的泛型类型参数, 但你需要 T
工具 Comparable
(请注意,当在泛型类型绑定(bind)中使用时,关键字 extends
可以表示扩展类或实现接口(interface)),这表示 MinMax
本身不扩展 Comparable
界面。
最后一件事,第二个片段更有意义
public interface MinMax <T extends Comparable<T>> {
}
因为你不想使用原始的 Comparable
界面。您要指定要与 Comparable
进行比较的对象类型.
关于java - 关于在另一个接口(interface)中实现泛型接口(interface)的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053499/
我是一名优秀的程序员,十分优秀!