Java中将列表复制到列表列表中的通用方法

Java中将列表复制到列表列表中的通用方法,java,generics,wildcard,Java,Generics,Wildcard,我试图创建一个尽可能通用的方法,将列表复制到列表中。我试过这个: public static <E> void addToMatrix(List<E> list, List<List<? extends E>> matrix) { matrix.add(list); } publicstaticvoidaddtomatrix(List,List您还可以将方法定义更改为: public static <E> void addTo

我试图创建一个尽可能通用的方法,将列表复制到列表中。我试过这个:

public static <E> void addToMatrix(List<E> list, List<List<? extends E>> matrix) {
    matrix.add(list);
}

publicstaticvoidaddtomatrix(List,List您还可以将方法定义更改为:

public static <E> void addToMatrix(List<? extends E> list, List<List<? extends E>> matrix) {
    matrix.add(list); 
}

publicstaticvoidaddtomatrix(List我认为最通用的方法是这样的(将第一个List参数中的“E”替换为“?extends E”):


publicstaticvoidaddtomatrix(列表)当前方法是否存在问题?我在编译时遇到以下错误:方法addToMatrix(列表,列表为什么需要方法?调用
matrix.add(列表)
直接似乎可以满足您的需要。这似乎很有效。您能解释一下它为什么有效,以及我的实现有什么问题吗?@AleksandarStojkovski已经添加了
列表的详细信息。添加
API合同。您能解释一下它为什么有效,以及我的实现有什么问题吗?@AleksandarStojkovski当您输入“?扩展E”时,您告诉您的程序期望E的子类型。在您的情况下,您期望的是数字的子类型。但当您同时请求启动整数列表(list)时,编译器会感到困惑,因为它将整数分配给E,然后期望列表中的E的子类型之一
public static <E> void addToMatrix(List<? extends E> list, List<List<? extends E>> matrix) {
    matrix.add(list); 
}
public static <E> void addToMatrix(List<? extends E> list, List<List<? extends E>> matrix)
{
    matrix.add(list);
}