在Java中导致编译错误的上界通配符
我无法理解为什么会出现这些编译错误: 1: 类型列表中的add(capture#1-of?extends Exec.Bird)方法不适用于参数(Exec.Sparrow) 2: 类型列表中的add(capture#2-of?extends Exec.Bird)方法不适用于参数(Exec.Bird)在Java中导致编译错误的上界通配符,java,bounded-wildcard,Java,Bounded Wildcard,我无法理解为什么会出现这些编译错误: 1: 类型列表中的add(capture#1-of?extends Exec.Bird)方法不适用于参数(Exec.Sparrow) 2: 类型列表中的add(capture#2-of?extends Exec.Bird)方法不适用于参数(Exec.Bird) 静态类Bird{} 静态类Sparrow扩展Bird{} 公共静态void main(字符串[]args){ List您可以像下面这样实例化鸟类列表: List<Bird> birds =
静态类Bird{}
静态类Sparrow扩展Bird{}
公共静态void main(字符串[]args){
List您可以像下面这样实例化鸟类
列表:
List<Bird> birds = new ArrayList<>();
List birds=new ArrayList();
完整代码:
import java.util.ArrayList;
import java.util.List;
public class Main {
static class Bird{}
static class Sparrow extends Bird{}
public static void main(String[] args) {
List<Bird> birds = new ArrayList<>();
birds.add(new Sparrow());
birds.add(new Bird());
}
}
import java.util.ArrayList;
导入java.util.List;
公共班机{
静态类Bird{}
静态类Sparrow扩展Bird{}
公共静态void main(字符串[]args){
List birds=new ArrayList();
添加(新麻雀());
添加(新的Bird());
}
}
带有列表关于#1:带有列表
import java.util.ArrayList;
import java.util.List;
public class Main {
static class Bird{}
static class Sparrow extends Bird{}
public static void main(String[] args) {
List<Bird> birds = new ArrayList<>();
birds.add(new Sparrow());
birds.add(new Bird());
}
}
List<Bird> birds = new ArrayList<>();
List<? super Bird> birds = new ArrayList<>();