【问题标题】:Subclass a collection and use generics子类化集合并使用泛型
【发布时间】:2012-11-29 15:00:38
【问题描述】:

我必须承认,我对 java 泛型不是很熟练。但这就是问题所在。 我需要继承 LinkedList 以添加一些(不是全部)典型的 Map 方法。假设我这样做:

public class TalendList<T extends Serializable> extends ArrayList<T>{

    private Map<T, T> map;

    public TalendList(){
        super();
        map = new ConcurrentHashMap<T, T>();
    }

这是正确的方法吗?为什么我不能在调用者代码中这样做:

List<String> ggg = new TalendList<String>();

但只有:

TalendList<String> ggg = new TalendList<String>();

?

【问题讨论】:

  • List&lt;String&gt; ggg = new TalendList&lt;String&gt;() 应该可以正常工作。您能否发布一个不起作用的完整示例?
  • 是的,这应该可以正常工作。
  • 像这样扩展 ArrayList 可能不是一个好主意。这里有一个更优雅的解决方案:code.google.com/p/guava-libraries/wiki/…
  • 我改用了 guava ForwardingList 设计,非常酷 :) tnx 为您的贡献!

标签: java generics collections map linked-list


【解决方案1】:

这是因为您正在导入:

import java.awt.List:

代替:

import java.util.List;

List的awt类型不支持参数化,不是泛型集合。

【讨论】:

  • 我觉得很愚蠢:S 这只是一个糟糕的导入。求救!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多