2017-01-30 4 views
22

Инструмент Javadoc создает документацию на основе модификатора доступности. По умолчанию он документирует все классы, поля и методы public и protected. Это может быть изменено следующим options:Как работает Javadoc с видимостью модулей в Java 9?

-публичный
показывает только открытые классы и члены.

-защищенный
Показывает только защищенные и общедоступные классы и участники. Это значение по умолчанию.

-package
Показывает только пакеты, защищенные и общедоступные классы и участники.

-private
Показаны все классы и участники.

Java 9 представляет концепцию модулей, а проект Jigsaw применяет его к существующему JDK. talk Марк Reinhold (третий в серии переговоров о модулях) показывает, как модификатор public теперь имеет различные уровни доступности, в зависимости от видимости модуля (через exports):

  • общественности к каждому
  • общественные, но только к конкретным модулям
  • общественности только в модуле

Поскольку в настоящее время нет все публичные члены доступны, было бы бессмысленно продолжать с той же схемой генерации Javadoc. Следует документировать только участников, которые подвергаются воздействию «достаточного» уровня.

Является ли модуль Javadoc осведомленным? Есть ли опции команды в дополнение к описанным выше для обработки дополнительного уровня экспозиции? Для публичных членов, которые подвергаются воздействию только определенных модулей, перечисляет ли Javadoc их, как в

public <module1, module2> static void getDefaultThing() 

?

+4

Интересный вопрос, особенно, поскольку цель javadoc может быть как внутри, так и внутри (например, разработчики библиотеки/модуля), но также публично (например, пользователи библиотеки/модуля). –

+0

@MarkRotteveel Да. Если бы он был нацелен только на пользователей библиотеки/модуля, я думаю, что только «публичный для всех» будет отображаться, поскольку модули пользователя не могли быть известны во время компиляции библиотеки. Не уверен, что это значит для 'protected'. – user1803551

+1

Кажется, что javadoc каким-то образом оснащен * некоторой * модульной документацией (я не пробовал ни одного из них). 'javadoc --help | grep module' показывает, что есть некоторые опции. Из моего понимания этих команд, которые возможны, есть как-то два типа документации - обычный и/или модули. Возможно, я ошибаюсь ... очень хороший вопрос. – Eugene

ответ

13

У javadoc есть новые параметры, которые позволяют вам выбирать, какие элементы задокументированы на модуле, упаковке, типе и уровне члена. Используя версию EA JDK 9, найдите новые опции --module, --show-* и --expand-requires.

Существующие варианты -public, -protected, -package, -private варианты были пересмотрены с точки зрения новых --show-* вариантов, хотя их командной строки помощь все еще нуждается в обновлении.

Таблица преобразования удобной денди является:

-public 
     --show-module-contents api --show-packages exported --show-types public --show-members public 

-protected (the long-standing default) 
     --show-module-contents api --show-packages exported --show-types protected --show-members protected 

-package 
     --show-module-contents all --show-packages all --show-types package --show-members package 

-private 
     --show-module-contents all --show-packages all --show-types private --show-members private 

В общем, по-прежнему использовать по умолчанию для создания документации для пользователей в API, и, возможно, использовать -package или -private для создания документации для разработчиков API. Для более мелкого контроля используйте базовые параметры --show-*.

+0

Как изменится выход, если он будет? Будут ли отмечены различные уровни «публичности» в Джавадоке? – user1803551

Смежные вопросы