gpt4 book ai didi

java - 编写双向映射时如何绕过 "Erasure of method is the same as another method"

转载 作者:行者123 更新时间:2023-11-30 06:47:03 33 4
gpt4 key购买 nike

我目前正在尝试编写一个双向映射,因为(据我所知)Java 没有提供双向映射。我的代码如下。

private static final class ColourCharTwoWayMap<E,F> {

private ArrayList<E> eArrayList;
private ArrayList<F> fArrayList;

private ColourCharTwoWayMap() {
eArrayList = new ArrayList<E>();
fArrayList = new ArrayList<F>();
}

public void put(E colour, F ch) {
eArrayList.add(colour);
fArrayList.add(ch);
}

public F get(E colour) throws ArrayIndexOutOfBoundsException {
return fArrayList.get(eArrayList.indexOf(colour));
}

public E get(F ch) throws ArrayIndexOutOfBoundsException {
return eArrayList.get(fArrayList.indexOf(ch));
}
}

Eclipse 给我错误“删除方法 get(E) 与类型 SaveManager.ColourCharTwoWayMap 中的另一个方法相同”。通过谷歌搜索,我了解到 Java 不喜欢做同样事情的泛型方法,这与重写有关,而 Java 不知道要使用什么方法。这一切都有点超出我的能力范围。

什么是更好的方法来完成我上面想做的事情? (即有一个方法接受 E 类型的对象并返回 F 类型的对象,反之亦然)。

最佳答案

由于您已经提到的类型删除效应,您的两个 get 函数具有相同的参数类型 - java.lang.Object。这显然是不允许的,因为函数名称也是相同的,并且编译器会发出错误。

解决办法很简单,将名称改为getE和getF

关于java - 编写双向映射时如何绕过 "Erasure of method is the same as another method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524808/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com