public <T super Number> void copy(T[] dest, T[] src) {
for (T t : src) {
}
}
答案 0 :(得分:3)
因为Java语言规范JLS 8.4.4 Generic Methods,JLS 4.4 Type Variables禁止使用它:
方法返回类型之前的<T>
被称为“类型变量”,对于类型变量,仅允许extends
。
因为这没有意义。如果某个方法适用于某种类型的T
及其所有超级类型(包括Object
),为什么它也不能适用于所有其他类型?
如果允许使用声明,则您对src
所知的所有方法是它包含某种Object
。具体来说,它不能假设src
包含任何类型的Number
。但是必须假设src
包含Object
会破坏泛型的目的,即允许对未知特定类型的对象进行类型安全的操作。