静态方法中的Java泛型定义

静态方法中的Java泛型定义,java,generics,Java,Generics,我在使用java泛型时遇到以下问题。基本上,我需要从子类型列表转换为其超类型列表,我定义了如下方法: public static <T> List<T> getList(List<? extends T> input) { ArrayList<T> list = new ArrayList<T>(); list.addAll(input); return list; } 公共静态列表getList(List p

我在使用java泛型时遇到以下问题。基本上,我需要从子类型列表转换为其超类型列表,我定义了如下方法:

public static <T> List<T> getList(List<? extends T> input) {
    ArrayList<T> list = new ArrayList<T>();
    list.addAll(input);
    return list;
}
公共静态列表getList(List

public static void <T, S extends T> List<T> getList(List<S> input)
公共静态无效列表getList(列表输入)

我不知道你可以在java@ColinD它不应该是ClassName.getList(blist)吗?指定这两种泛型类型?我似乎至少需要在我的Java 6编译器上使用它…我认为“只需调用构造函数”路线就是要走的路。@Greg:不,该方法只有一个泛型类型参数,
T
,因此在这种情况下只能接受一个类型参数,
A
A
很重要,因为它是我们想要的返回类型。
B
除了它必须是
A
的子类型之外没有太大关系。@ColinD:啊,是的,哟你是对的。我在玩一些关于这个问题的代码,有一次我有一个方法有两个类型参数,但都不需要命名,一个可以是通配符,我的错,谢谢(我仍然认为调用构造函数可能是最好的方法;)这不会在
列表上添加任何内容没错:如果只使用一次,那么添加s就没有意义了
List<B> blist = ...
List<A> alist = ClassName.<A>getList(blist);
List<A> alist = new ArrayList<A>(blist);
public static void <T, S extends T> List<T> getList(List<S> input)