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);
}
}