静态方法中的Java泛型定义

时间:2011-07-27 02:42:22

标签: java generics

使用java generic时出现以下问题。基本上我需要从子类型列表转换为其超类型列表,我定义了这样的方法:

public static <T> List<T> getList(List<? extends T> input) {
    ArrayList<T> list = new ArrayList<T>();
    list.addAll(input);
    return list;
}

但是我不确定如何调用此方法?给定类型A,B扩展A:

List<A> alist = getList(List<B> blist);

具有不匹配类型,因为在这种情况下,我只向方法调用提供B的类型信息。

如何使用提供的类型信息A调用方法?

感谢。

2 个答案:

答案 0 :(得分:5)

List<B> blist = ...
List<A> alist = ClassName.<A>getList(blist);

请注意,您也可以在此处使用ArrayList的构造函数:

List<A> alist = new ArrayList<A>(blist);

答案 1 :(得分:0)

怎么样

public static void <T, S extends T> List<T> getList(List<S> input)