почему тип param не поддерживает нижнюю границу, есть ли конкретная причина не поддерживать - PullRequest
0 голосов
/ 19 января 2019
public  <T super Number> void copy(T[] dest, T[] src) {
  for (T t : src) {

  }
}

1 Ответ

0 голосов
/ 19 января 2019
  1. Поскольку это запрещено спецификацией языка Java JLS 8.4.4 Общие методы , JLS 4.4 Переменные типа :

    The <T> до того, как тип возвращаемого значения метода называется «Переменная типа», а для переменных типа допускается только extends.

  2. Поскольку это не имеет смысла.Если метод работает для некоторого типа T и всех его супертипов (включая Object), почему он не должен работать и для всех других типов?

    Если объявление будет разрешено, все вашиМетод знал бы о src, что он содержит какой-то Object.В частности, нельзя предположить, что src содержит какие-либо Number с.Но если предположить, что src содержит Object s, то это побеждает цель обобщений, то есть разрешает безопасные операции над объектами неизвестного определенного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...