此语法是什么意思(List <?扩展Number>数据)

hax*_*ode 1 java generics constructor

我正在尝试使用charts4japi,其中一个构造函数具有以下功能:

public static Data newData(List<? extends Number> data)

在我看来,它似乎是某种形式的泛型,但我以前从未见过这种表示法,而且我也不了解。

rge*_*man 5

这是一个上限通配符? extends Number

这意味着,data可以是任何一个列表,是Number或子类,如List<Number>List<Integer>List<Double>,等

Java中的泛型不是协变的,因此a List<Double>不是a List<Number>。在这里,类型的参数List<? extends Number>允许List<Double>List<Number>,但类型的参数List<Number>不允许List<Double>

至于List部分,它可以是任何实现的东西List,例如LinkedList<Integer>ArrayList<Double>