使用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调用方法?
感谢。
答案 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)