- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了好玩,我正在创建一个排序框架,以更好地理解各种排序算法。而且,我试图使其足够通用,以便它可以对实现扩展可比较接口(interface)的接口(interface)的任何内容进行排序。然而,java 编译器对我不满意。
这是我的界面:
public interface Sorter<C extends Comparable<C>>
{
void sort(C[] comparables);
void sort(C[] comparables, Comparator<C> comparator);
}
而且,这是我实现该接口(interface)的抽象类:
public abstract class AbstractSort<C extends Comparable<C>> implements Sorter
{
protected abstract void doSort(C[] comparables, Comparator<C> comparator);
final public void sort(C[] comparables)
{
sort(comparables, new Comparator<C>()
{
public int compare(C left, C right)
{
return left.compareTo(right);
}
});
}
final public void sort(C[] comparables, Comparator<C> comparator)
{
doSort(comparables, comparator);
}
}
而且,这是我遇到的错误:
java: name clash: sort(C[]) in AbstractSort and sort(java.lang.Comparable[]) in Sorter have the same erasure, yet neither overrides the other
Error:(25, 23) java: name clash: sort(C[],java.util.Comparator<C>) in AbstractSort and sort(java.lang.Comparable[],java.util.Comparator<java.lang.Comparable>) in Sorter have the same erasure, yet neither overrides the other
预先感谢您的帮助!
最佳答案
尝试写implements Sorter<C>
。如果没有类型参数,您将使用原始类型,这会禁用继承方法的泛型的某些方面。具体来说,使用原始父类(super class)型,您只能继承已删除的方法签名。在您的情况下,而不是继承方法 sort(C[] comparables)
你继承了一个方法sort(Comparable[] comparables)
,您只能使用相同的签名来覆盖它。
通过指定Sorter<C>
作为父类(super class)型,您继承了一个方法 `sort(C[] Compares),您可以使用相同的签名覆盖该方法。
像这样的陷阱就是为什么 Java 语言规范建议原始类型只能用于与非泛型遗留代码的接口(interface),并要求编译器在使用原始类型时发出警告。
关于JAVA GENERICS ERROR : have the same erasure, 但两者都没有覆盖另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651379/
Scenario A.java-----------after erasure-------->M.class Scenario B.java-----------after erasure-----
我最近偶然发现一段代码由于“相同的删除”问题而无法在我的 Eclipse 中编译(看起来与 this one 非常相似)。编写代码的人向我保证,它可以在他们的本地环境和他们的持续集成中编译,所以我一起
我有以下代码但它不起作用:出现错误 both methods have same erasure。 public class Foo { public static void main(St
我第一次在 Java 中使用泛型,我面临一个我无法克服的问题:为什么编译: public interface Aa{} public interface Bb{} public interface C
我正在尝试使用 Option.getOrElse()方法,但它返回 etiher Any或 ScalaObject而不是 Option 的正确类的实例被参数化了。我找不到有关此问题的任何提及,而且似乎
这个问题已经有答案了: interface and a class. name clash: same erasure, yet neither overrides other (3 个回答) 已关闭
我有一个特征和两个扩展它的案例类: trait Authenticatable { val email: String val pass: String val id: Long va
所以我有这个界面 public interface EventHandler { public void handleEvent(E event); } 我想为它派生处理事件的类,如下所示
斯卡拉 2.8.1 我已经使用解析器/组合器实现了一个非常简单的外部 DSL,用于 QA 编写验收测试。 最近我添加了循环遍历一组表达式的功能 sealed trait Expr ... //inse
我目前正在尝试编写一个双向映射,因为(据我所知)Java 没有提供双向映射。我的代码如下。 private static final class ColourCharTwoWayMap { p
通过使用泛型,我们可以在编译期间检测到任何可能的情况。例如, List list = new ArrayList(); //list.add(new Integer(45)); This will c
我有一个类定义了以下两个方法: public Map> method(final Map> data) public boolean method(final Map data) 基于泛型的 Java
我正在尝试设置 Hadoop 3 集群。 关于纠删码功能的两个问题: 如何确保启用纠删码? 我还需要将复制因子设置为 3 吗? 请指出与纠删码/复制相关的相关配置属性,以获得与 Hadoop 2(复制
比较这两种技术的优点/缺点是什么?更重要的是:为什么以及何时应该使用一个而不是另一个?这只是个人品味/偏好的问题吗? 尽我所能,我还没有找到其他明确解决我问题的帖子。在有关多态性和/或类型删除的实际使
我无法理解 asObservable method 的基本原理和目的在 RxSwift 的 Observable class . /// A type-erased `ObservableType`.
我一直在尝试但未能模仿 Baeldung article的演练如何触发“子”实体的保存:通过 Spring Boot 的 @DBRef 注释“包含”在另一个实体中的实体。就我而言,我正在尝试从客户那里
您好,我想重写自定义类 MyList 中的构造函数。 下面的代码可以编译,我收到“相同删除”错误。对于编译器List与 List 类型相同 有人可以建议我如何解决这个问题吗?我尝试使用 List并使用
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 7
我的任务是使用奇偶校验和方法和 Reed-Solomon Erasure Correction 对一些声音字节进行编码和解码。 .我已经完成了第一种方法(奇偶校验和)的编码,但需要帮助完成第二种方法,
我有一个接口(interface),当我尝试实现它的一种方法时,我得到了这个错误:“名称冲突:GenericQueue 中的 enqueue(T#1) 和 IGenericQueue 中的 enque
我是一名优秀的程序员,十分优秀!