为什么赢了';Javadoc使我的子类从Java';什么课?

为什么赢了';Javadoc使我的子类从Java';什么课?,java,javadoc,subclass,inheritdoc,Java,Javadoc,Subclass,Inheritdoc,几个月来我一直在寻找答案,我尝试了多种方法,包括解压缩压缩文件夹src.zip并将其用作Javadoc的参数(例如:Javadoc-sourcepath src com.example.test) 这是JDK 6 Update 24附带的默认Javadoc 假设我正在开发一个实现java.util.map接口的新映射。默认情况下,如果我没有弄错的话,我从Map接口重写的方法应该继承接口的文档。然而,javadoc从不这样做 到目前为止,解决这个问题的唯一方法是使用Java编写类(例如:javad

几个月来我一直在寻找答案,我尝试了多种方法,包括解压缩压缩文件夹src.zip并将其用作Javadoc的参数(例如:
Javadoc-sourcepath src com.example.test

这是JDK 6 Update 24附带的默认Javadoc

假设我正在开发一个实现
java.util.map
接口的新映射。默认情况下,如果我没有弄错的话,我从Map接口重写的方法应该继承接口的文档。然而,javadoc从不这样做

到目前为止,解决这个问题的唯一方法是使用Java编写类(例如:
javadoc com.example.text Java.util
)。我不想这样做,因为这让我看起来像是重写了Java类,但这是唯一的方法吗?如果是的话,我想我可以接受它,但我的理解是,有另一种方法可以做到这一点

如果这有点乱,我很抱歉。这是我第一次使用堆栈溢出。如果已经有人问过这个问题,我也很抱歉。我读过很多类似的问题,它们并没有涵盖我想问的所有问题,我发现它们非常令人困惑,因为它们涉及到编写自己的Javadoc实现。无论如何,感谢您在advanced=)

编辑:5月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}
     *
     * <P>The {@code toString} method for class {@code UpperCaseObject} returns
     * converted to uppercase.</P>
     *
     * @see String#toUpperCase()
     */
    @Override public String toString() {
        return super.toString().toUpperCase();
    }

}
package.com.example;
/**
*返回大写字符串表示形式的简单类。
*/
公共类大写对象{
@重写公共int hashCode(){
返回super.hashcode();
}
/**
*{@inheritardoc}
*
*

类{@code UpperCaseObject}的{@code toString}方法返回 *已转换为大写。

* *@see String#toUpperCase() */ @重写公共字符串toString(){ 返回super.toString().toUpperCase(); } }
我将这个示例(文件名为
UpperCaseObject.java
)移动到一个目录
javadoc test/com/example
,我还制作了另一个目录
javadoc test/java/lang
,将
Object.java
(来自src.zip)放在其中

我对javadoc的调用是
javadoc-link com.example
目录下的
javadoctest
。我的path参数中有jdk6 bin目录

我期望的两件事是
UpperCaseObject.hashCode
继承所有文档,以及
UpperCaseObject.toString
java.lang.Object
的额外段落之前的所有内容。然而,不幸的是,我没有得到任何文档

编辑: 嗯,我必须做的是以下几点。这只是一个简单的解决办法

  • 我从source.zip复制了所有源文件,就像您通常那样
  • 我还为每个包制作了包文件。它们包含第一段(带摘要的那一段)和第二段,其中说“参见Java中的™ 平台,标准版6 API规范,了解更多信息。”
  • 源文件本质上是超类、它们的超类(和接口)以及它们抛出的、也在同一个包中的任何异常。唯一的例外是java.lang,我只需要在其中获取对象。也需要异常,因为除了java.lang之外,如果异常与抛出类位于同一个包中,则其他包不会链接
  • 我javadoc保存了我使用的所有包/子类化/异常抛出
  • 我将确保在概览文件中包含一些关于标准软件包和我自己的软件包的信息
  • 不幸的是,我现在只能做一些变通,但我确信这可能是我的Java版本的一个问题。听起来其他人也有类似的问题,并想出了自己的解决办法。这只是我自己的=)


    我仍然会接受答案,但这是目前最方便的选择。多谢各位

    继承方法的源文件在运行时需要位于javadoc工具的-sourcepath上。您不需要在命令行上传递继承的类。

    您可以做的一件事是使用以下选项链接到这些类的官方Javadoc:

    这将允许Javadoc将SDK的类视为“外部引用类”。从Javadoc文档中:

    在javadoc运行期间未生成文档的引用类。换句话说,这些类不会传递到命令行上的Javadoc工具中。生成的文档中指向这些类的链接称为外部引用或外部链接。例如,如果只在java.awt包上运行Javadoc工具,则java.lang中的任何类(如Object)都是外部引用类。外部引用类可以使用-link和-linkoffline选项链接到。外部引用类的一个重要属性是其源注释通常不可用于Javadoc运行。在这种情况下,无法继承这些注释。 请注意,这些类的Javadoc仍然不会被继承。但是,您现在可以链接到它,如下所示:

    public class MyMap implements java.util.Map {
        ...
        /**
         * @see java.util.Map#isEmpty()
         */
        @Override
        public boolean isEmpty() {
            ...
        }
    }
    
    [编辑]


    @请参见
    标记以进行说明。Javadoc应该自动生成一个“Specified By”链接,这样您就可以完全省略Javadoc注释。

    如果继承的类在sourcepath中,而不是像Ted写的那样直接记录在包列表中,那么它通常应该可以工作。如果它不能以这种方式工作,则必须显示javascript的示例调用,以及directo的草图
    public class MyMap implements java.util.Map {
        ...
        /**
         * @see java.util.Map#isEmpty()
         */
        @Override
        public boolean isEmpty() {
            ...
        }
    }