java此语法的含义是什么(列表<?扩展数字>数据)
我正在尝试使用charts4j
api,其中一个构造函数具有以下特性:
public static Data newData(List<? extends Number> data)
对我来说,它看起来像某种形式的泛型,但我以前从未见过这种符号,我不理解它
你可以在下面搜索框中键入要查询的问题!
我正在尝试使用charts4j
api,其中一个构造函数具有以下特性:
public static Data newData(List<? extends Number> data)
对我来说,它看起来像某种形式的泛型,但我以前从未见过这种符号,我不理解它
# 1 楼答案
这定义了一个方法,该方法接收实现
List
接口(ArrayList
)的集合,该接口包含Number
类(甚至是Number
类本身)的任何子类实际上,这个概念与泛型有关,它被称为上界通配符。长话短说:它允许您编写一个没有特定类型限制的方法,而是一个层次结构限制
# 2 楼答案
当实际参数可以是某个类或其任何子类时使用。所以在你的情况下:
您的方法可以接受类型为Number的任何类的列表
要了解有关Java泛型的更多信息,请参阅:
http://docs.oracle.com/javase/tutorial/extra/generics/methods.html
# 3 楼答案
这意味着数据列表只能将数字类型或子数字类型的对象添加为双精度整数
# 4 楼答案
这是一个upper-bounded wildcard:
? extends Number
这意味着
data
可以是任何Number
或子类的列表,例如List<Number>
、List<Integer>
、List<Double>
等Java中的泛型不是协变的,因此
List<Double>
不是List<Number>
。这里,类型为List<? extends Number>
的参数允许List<Double>
以及List<Number>
,但是类型为List<Number>
的参数不允许List<Double>
至于
List
部分,它可以是任何实现List
的东西,比如LinkedList<Integer>
或ArrayList<Double>
# 5 楼答案
这是一种泛型。这意味着
data
参数是扩展Number的任何类的列表。i、 e.如果您有自定义类:它将以
List<Nomber>
作为变量# 6 楼答案
是的,在泛型中是wildcard。这意味着该方法将接受扩展数字的任何类型的类列表
例如:
List<Integer>, List<Double>