Почему Javadoc не заставляет мои подклассы унаследовать документацию от классов Java?

Я искал ответ в течение нескольких месяцев и пробовал несколько вещей, включая распаковку сжатой папки src.zip и используя его как параметр для Javadoc (например: javadoc -sourcepath src com.example.test )

Это Javadoc по умолчанию, который поставляется с JDK 6 Update 24.

Предположим, я работаю над новой картой, которая реализует интерфейс java.util.Map . По умолчанию методы, которые я переопределяю из интерфейса карты, должны наследовать документацию из интерфейса, если я не ошибаюсь. Однако javadoc никогда этого не делает.

Единственное, что до сих пор решало эту проблему, это фактически добавление документации к классам, написанным Java (например: javadoc com.example.text java.util ). Я не хочу этого делать, потому что создается впечатление, что я переписал классы Java, но разве это единственный способ сделать это? Если это так, я полагаю, я мог бы просто жить с этим, но я понимал, что есть другой способ сделать это.

Спасибо =) Прошу прощения, если это немного запутано. Я впервые использую Stack Overflow. Мне также жаль, если этот вопрос уже был задан. Я читал много похожих вопросов, потому что они не охватывают все, что я хотел задать, и я нашел их очень запутанными, потому что они связаны с написанием вашей собственной реализации Javadoc. В любом случае, спасибо в продвинутом режиме =)

Редактировать: 25 мая в 4:44

Хорошо =) Если я правильно понял, вы хотели бы увидеть пример. Это более простой пример, который я пытался понять, не потому ли, что я пробовал что-то, что не должно работать.

package com.example;

/**
 * A simple class that returns an upper-case string representation.
 */
public class UpperCaseObject {

    @Override public int hashCode() {
        return super.hashcode();
    }

    /**
     * {@inheritDoc}
     *
     * 

The {@code toString} method for class {@code UpperCaseObject} returns * converted to uppercase.

* * @see String#toUpperCase() */ @Override public String toString() { return super.toString().toUpperCase(); } }

Я переместил этот пример (имя файла UpperCaseObject.java ) в каталог ] javadoc-test / com / example , и я также создал другой каталог javadoc-test / java / lang , разместив Object. java (из src.zip).

Я сделал вызов javadoc javadoc -link http://download.oracle.com/javase/6/docs/api / com.example из каталога javadoc-test . У меня есть каталог bin jdk6 в параметре пути.

Я ожидал, что UpperCaseObject.hashCode унаследует всю документацию, и UpperCaseObject.toString все, что было раньше дополнительный абзац из java.lang.Object . Однако, к сожалению, я не получил никакой документации.

Изменить:

Что ж, мне нужно было сделать следующее. Это простой обходной путь.

  1. Я скопировал все исходные файлы из source.zip, как обычно.
  2. Я также сделал файлы пакетов для каждого пакета. Они содержат самый первый абзац (тот, который содержит резюме) и второй абзац, в котором говорится: «Дополнительную информацию см. В Package Summary в спецификации API платформы Java ™ Standard Edition 6».
  3. Исходные файлы были, по сути, суперклассами, их суперклассами (и интерфейсами) и любыми исключениями, которые они создавали, которые также находились в том же пакете. Единственным исключением был java.lang, где мне нужно было только получить Object. Исключения также были необходимы, потому что, за исключением java.lang, другие пакеты не связывались, если исключение было в том же пакете, что и класс генерации.
  4. Я javadoc добавил все пакеты, которые я использовал / subclassing / exception- Выбрасывание из.
  5. Я обязательно включу некоторую информацию о стандартных пакетах и ​​моем собственном пакете в файл обзора.

К сожалению, я пока могу только обойти эту проблему, но я убежден, что это может быть проблема с моей версией Java. Похоже, что у других людей была аналогичная проблема, и они придумали свои собственные обходные пути. Это только мой собственный =)

Я все еще буду отвечать, но пока что это наиболее удобный вариант. Большое спасибо!

7
задан user766413 28 May 2011 в 20:41
поделиться