Javadoc: Разница между «Методами, унаследованными от» и «Методами, объявленными в» - PullRequest
1 голос
/ 01 мая 2019

Документы JDK Java для Java <10 содержат раздел «Методы, унаследованные от», в котором перечислены методы, объявленные в родительском классе / интерфейсе.Однако, начиная с Java 10, этот раздел называется «Методы, объявленные в». </p>

Для сравнения:

Есть ли разница между ними или это только изменение названия раздела?

1 Ответ

1 голос
/ 01 мая 2019

В Java 10 опция --override-methods (detail|summary) была добавлена ​​к команде javadoc:

Целью было снизить уровень шума при реализации или переопределении методов, но документация осталась без изменений.

Режимы

detail режим (по умолчанию)

Режим detail используется по умолчанию при использовании javadoc без указания override-methods.

Он ведет себя так, как документация была сгенерирована ранее:

  • Если метод не переопределен, он будет в разделе «Методы, унаследованные от».
  • Если метод переопределен, он будет задокументирован в разделе «Сведения о методе» независимо от того, была ли изменена его подпись или документация.

summary режим

  • Если метод переопределен и его документация изменена, он будет задокументирован в разделе «Сведения о методе».
  • В противном случае он будет указан в разделе «Методы, объявленные в».

Режим summary теперь используется для генерации документации JDK ( JDK-8189706 ).

Имейте в виду, что этот режим в настоящее время содержит ошибки, поскольку он игнорирует некоторые изменения в сигнатуре метода, которые должны быть задокументированы, см. JDK-8223607 .

Заключение

Вы увидите раздел «Методы, унаследованные от» или «Методы, объявленные в».
При сравнении двух документов (одна с «унаследованным от», другая с «объявленным в») для одного и того же класса, тогда в случае с «унаследованным от» может быть перечислено больше методов в разделе «Сведения о методе», тогда как для «объявленных в» Во-первых, некоторые методы вместо этого находятся в разделе «объявлено в».

Так что да, между ними есть разница.

Пример

Различие в поведении можно увидеть, например, для класса java.time.temporal.ChronoUnit:

  • Java 8 : в списке "Сведения о методе"
  • Java 12 : Содержится в "Методах, объявленных в классе java.lang.Enum"; см. также источник , чтобы убедиться, что метод действительно переопределен
...