java - 类的Java语法
问题描述
以下代码来自Arrays
类:
http://developer.classpath.org/doc/java/util/Arrays-source.html
public static <T,U> T[] copyOfRange(U[] original, int from, int to,
Class<? extends T[]> newType)
{
if (from > to)
throw new IllegalArgumentException("The initial index is after " +
"the final index.");
T[] newArray = (T[]) Array.newInstance(newType.getComponentType(),
to - from);
if (to > original.length)
{
System.arraycopy(original, from, newArray, 0,
original.length - from);
fill(newArray, original.length, newArray.length, null);
}
else
System.arraycopy(original, from, newArray, 0, to - from);
return newArray;
}
我对Class<? extends T[]>
部分感到困惑,如何T[]
扩展?据我所知,没有这样的数组是K[]
eventhough 的子类型。T[]
K extends T
解决方案
这是因为与其他对象不同,java 中的数组是协变的。至于为什么数组具有这种特殊属性,我不确定,但问题已在 SO here上得到解答。
推荐阅读
- javascript - 如何从构造(闭包)外部列出一个简单的私有变量?
- suitescript2.0 - 在销售订单标题上填充 3 个自定义字段
- node.js - ethereum remix 中的简单智能合约 - ParserError: Expected ';'
- java - 在 Eclipse 上从 github 加载 gradle 项目的问题
- node.js - 节点。- 使用 ngrok 为 localhost ftp 服务器创建隧道
- html - 为什么不显示图案
- javascript - 使用 location.href 时页面挂起
- python - 应该返回浮点数但它返回“ - ”我该如何解决这个问题?
- data-analysis - AttributeError:模块“pyDEA”没有属性“DEAProblem”
- angular - 使用 GoTo 方法的相对导航