您可以
List<T> list = new ArrayList<T>();直接创建一个,这可以允许T的所有子类型进入列表。这实际上很难理解。当您声明为
List<? extends T> list = ...
这意味着它可以允许
T列表的任何未知子类型。但是,根据该声明,我们无法确保确切的子类型
T。因此,我们只能添加
null到其中

您可以
List<T> list = new ArrayList<T>();直接创建一个,这可以允许T的所有子类型进入列表。这实际上很难理解。当您声明为
List<? extends T> list = ...
这意味着它可以允许
T列表的任何未知子类型。但是,根据该声明,我们无法确保确切的子类型
T。因此,我们只能添加
null到其中