相关疑难解决方法(0)

<E extends Number>和<Number>之间有什么区别?

这个方法声明有什么区别:

public static <E extends Number> List<E> process(List<E> nums){
Run Code Online (Sandbox Code Playgroud)

 public static List<Number> process(List<Number> nums){
Run Code Online (Sandbox Code Playgroud)

你会在哪里使用前者?

java generics

36
推荐指数
2
解决办法
1万
查看次数

Class中getConstructors()的泛型类型

在泛型类中,Class<T>该方法getConstructors()具有返回类型,而不是泛型类型参数T.其原因在于javadoc中的解释.

请注意,虽然此方法返回一个Constructor<T>对象数组(即此类中的构造函数数组),但此方法的返回类型Constructor<?>[]并非Constructor<T>[]如预期的那样.这个信息量较少的返回类型是必需的,因为从此方法返回后,可以修改数组以保存不同类的Constructor对象,这将违反类型保证Constructor<T>[].

我的一位同事和我试图理解这个解释.在我们的理解中,他们基本上说它是未知的泛型类型,因为一些调用者可以将其他Constructor对象放入该数组中.我们做对了吗?如果是这样,为什么有人会这样设计API.使用特定类型并信任程序员正确使用数组不是更好吗?对我们来说,这听起来有点像"我们正在制作更糟糕的API,因为程序员使用它可能会尝试一些愚蠢的东西".我们的谬误在哪里?

java generics reflection

11
推荐指数
1
解决办法
895
查看次数

标签 统计

generics ×2

java ×2

reflection ×1