Java 返回具有上限的泛型列表

Java 返回具有上限的泛型列表,java,generics,Java,Generics,我的问题是这篇文章的延伸 如果我有这样的方法: public static <E extends CharSequence, T extends E> List<T> doIt(List<E> nums) { return null; } 公共静态列表doIt(列表nums){ 返回null; } 为什么要编译这段代码?为什么超级字符串与T序列兼容 public static void main(String[] args) { List<

我的问题是这篇文章的延伸

如果我有这样的方法:

public static <E extends CharSequence, T extends E> List<T> doIt(List<E> nums) {
return null;
}
公共静态列表doIt(列表nums){
返回null;
}
为什么要编译这段代码?为什么超级字符串与T序列兼容

public static void main(String[] args) {

    List<CharSequence> in = new ArrayList<>();

    List<? super String> result = new ArrayList<>();

    result = doIt(in);        
}
publicstaticvoidmain(字符串[]args){
List in=new ArrayList();

列出代码之所以有效,是因为
你看到了吗?我只想简单地说,删除
结果的初始化的代码不会给问题添加任何内容,并且该值会立即被覆盖。谢谢你的回答。但可能是@michael laudrup。我的意思是,不相互排斥的是,至少有一个类符合这两个约束。在本例中,它们是
String
CharSequence
本身。相反,如果您有

import java.util.*;
class Test {

   public static <E extends CharSequence, T extends E> doIt(List<E> in) {
     return null;
   }

   public static void main(String[] args) {
      final List<CharSequence> in = new ArrayList<>();
      final List<? super Integer> out = doIt(in);
   }
}