public <T super Number> void copy(T[] dest, T[] src) { for (T t : src) { } }
Поскольку это запрещено спецификацией языка Java JLS 8.4.4 Общие методы , JLS 4.4 Переменные типа :
The <T> до того, как тип возвращаемого значения метода называется «Переменная типа», а для переменных типа допускается только extends.
<T>
extends
Поскольку это не имеет смысла.Если метод работает для некоторого типа T и всех его супертипов (включая Object), почему он не должен работать и для всех других типов?
T
Object
Если объявление будет разрешено, все вашиМетод знал бы о src, что он содержит какой-то Object.В частности, нельзя предположить, что src содержит какие-либо Number с.Но если предположить, что src содержит Object s, то это побеждает цель обобщений, то есть разрешает безопасные операции над объектами неизвестного определенного типа.
src
Number