Java通配符与类型参数

Raz*_*van 11 java generics

为什么1个工作而2个不工作?

1:

public List<? extends Integer> l1;
public List<? extends Number> l2 = l1;
Run Code Online (Sandbox Code Playgroud)

2:

public List<U> l1;
public List<S> l2 = l1;
//where U and S have been previously defined as: **S extends Number,U extends Integer**
Run Code Online (Sandbox Code Playgroud)

Sau*_*wal -2

因为在 1 中你分别说的是 Integer 和 Number 的任何子类。

但第二你说的是 U 和 S 的泛型,像这样的泛型不支持 Super 可以引用 java OOP 的子类对象概念。