Class<?的Java语法扩展 T[]> [重复]
Posted
技术标签:
【中文标题】Class<?的Java语法扩展 T[]> [重复]【英文标题】:Java syntax of Class<? extends T[]> [duplicate] 【发布时间】:2020-03-12 19:59:43 【问题描述】:以下代码来自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;
我对@987654324@ 部分感到困惑,如何扩展T[]
?据我所知,没有像K[]
这样的数组是T[]
的子类型,尽管K extends T
。
【问题讨论】:
【参考方案1】:这是因为与其他对象不同,java 中的数组是协变的。至于为什么数组有这个特殊属性,我不确定,但是这个问题已经在 SO here 上得到了回答。
【讨论】:
谢谢!我再次对数组/列表子类型感到困惑以上是关于Class<?的Java语法扩展 T[]> [重复]的主要内容,如果未能解决你的问题,请参考以下文章