Java 泛型方法的问题

Java 泛型方法的问题,java,generics,generic-method,Java,Generics,Generic Method,我在以下情况下遇到问题: private static List<? extends Object> function1(final Collection<? extends Object>... collections) { final List<Object> result = new ArrayList<Object>(); // do some work return result; } public stati

我在以下情况下遇到问题:

private static List<? extends Object> function1(final Collection<? extends Object>... collections) {
    final List<Object> result = new ArrayList<Object>();
    // do some work
    return result;
}


public static List<? extends Object> function2(final Collection<? extends Object>... collections) {
    // do some work
    return function1(collection);
}

private static List您的声明并不意味着“function2”的参数类型和返回类型是相同的

如果项目类型输入和输出是常见的,则可以声明:

public static <T>  List<T> function2 (Collection<T>... inputs) {
    // do some work
    return function1( inputs);
}

public static <T>  List<T> function1 (Collection<T>... inputs) {
    // do some work
}
公共静态列表函数2(收集…输入){
//做些工作
返回功能1(输入);
}
公共静态列表功能1(收集…输入){
//做些工作
}
如果“捕获”不一定来自同一位置或同一类型,则具有明显相似祖先的通配符类型不一定可以相互分配。这还可以防止添加不正确类型的项时使用更一般的指定

例如,
列表
不可分配给
列表
,因为添加到字符串列表的对象将破坏列表中只需要字符串的代码


一般来说,
更好的简写法。你能告诉我为什么