我目前正在尝试编写双向地图,因为(据我所知)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 的对象,反之亦然)。