Аннотация для отключения JavaDocs - PullRequest
5 голосов
/ 18 декабря 2009

Есть ли аннотация, чтобы объявить, что определенный метод не будет включен в JavaDocs, даже если он является открытым?

Что-то вроде:

@nojavadocs
public void foo(){
//...
}

P.S. Здесь я понимаю смысл API, но методы просто «не поддерживаются». Они работают (и должны быть общедоступными для доступа из других пакетов), но мы не хотим документировать их и отвечать на вопросы о том, как их использовать, когда их функциональность не соответствует поддерживаемым сценариям использования. Хороший дизайн может означать перемещение их в другой класс, но они логически ссылаются на данные в классе.

Ответы [ 4 ]

6 голосов
/ 18 декабря 2009

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

Если вы хотите, чтобы метод не использовался за пределами класса или нескольких пользователей, сделайте его закрытым или пакетным. Если это неудобно и должно быть публично, я просто очень четко задокументирую ограничения на его использование, возможно, с соглашением об именах (например, это делает python, есть имена сущностей, окруженные подчеркиванием, которые вы можете видеть, но должен быть частью реализации класса, а не общедоступным API)

4 голосов
/ 18 декабря 2009

Нет, если вы используете Sun JavaDocs.

У них есть запрос функции , но с 1997 года он имеет низкий приоритет.

Вы можете написать собственный доклет, чтобы преодолеть это, или использовать сторонний инструмент (DocFlex или подобный).

4 голосов
/ 18 декабря 2009

Да ... но не в хорошем смысле (общедоступные методы, которые на самом деле не являются "публичными", не являются хорошей практикой проектирования).

Вы можете следовать предложению, данному в этой теме , и пометить метод с помощью @deprecated, а затем при запуске опции использования javadoc -nodeprecated.

Редактировать: Как уже отмечалось, это не желательный курс действий. Это решит вашу проблему, но вам действительно нужно переосмыслить, почему вы хотите скрыть метод - если скомпилированная версия вашего кода кто-то все равно сможет увидеть вашу функцию; сокрытие этого в документации фактически не скрывает метод. Я действительно хочу подчеркнуть, что квалификаторы private, public и protected имеют значение, которое вы должны учитывать и эффективно использовать. Не существует такого понятия, как «скрытый» public метод .

2 голосов
/ 18 декабря 2009
/**
 *  Don't use this method <br>
 *  <i>or all your data will be lost.</i>
 */
public void foo(){
    //...
}

хорошо, используйте лучшее объяснение, почему пользователь не должен использовать этот метод ...
Помните, что нетрудно найти любой (публичный) метод с использованием декомпилятора или Reflection.

...