我正在尝试构建一个名为ListNamed的容器类型,它本质上是一个列表,但允许按名称进行元素查找,其中多个元素可以具有相同的名称,在这种情况下,查找将返回第一个元素找到了匹配的名称(这就是为什么我不能使用HashMap - >顺序很重要,而且键不是唯一的。)
我的初始版本,有效:
public class ListNamed<T extends Named> extends ArrayList<T>{
public T get(String name){
for (T x: this){
if (x.getName().equals(name)){
return x;
}
}
return null;
}
}
但是,有些情况下我想指定一个不同的List实现 - 而不是ArrayList,有些情况下我想使用LinkedList。
那么,有没有办法通过泛型指定扩展实现,还是我必须创建单独的类(ArrayListNamed,LinkedListNamed)?