我一直在寻找几个月的答案,我尝试过多种方法,包括解压缩Compressed文件夹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类,但这是唯一的方法吗?如果它是我想我可以忍受它,但我的理解是有另一种方法来做到这一点。
谢谢=)如果这有点乱,我很抱歉。这是我第一次使用Stack Overflow。如果已经提出这个问题,我也很抱歉。我已经阅读了很多类似的问题,因为它们没有涵盖我想要提出的所有内容,而且我发现它们非常令人困惑,因为它们涉及编写自己的Javadoc实现。无论如何,谢谢你在advanced =)
好吧=)如果我理解正确,你想看一个例子。这是一个更简单的例子,我试图看看是不是因为我正在尝试一些不起作用的东西。
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();
}
}
我将此示例(文件名为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
。我的路径参数中有jdk6 bin目录。
我期望的两件事是UpperCaseObject.hashCode
继承所有文档,UpperCaseObject.toString
来自java.lang.Object
的额外段落之前的所有内容。然而,遗憾的是,我没有得到任何文档。
嗯,我必须做的是以下内容。这只是一个简单的解决方法。
不幸的是,我现在只能解决这个问题,但我确信这可能是我的Java版本的问题。这听起来像其他人有类似的问题,并提出了自己的解决方法。这只是我自己的=)
我仍然会得到答案,但同时这是最方便的选择。非常感谢你!
答案 0 :(得分:3)
继承方法的源文件在运行时需要位于javadoc工具的-sourcepath上。您不需要在命令行上传递继承的类。
答案 1 :(得分:1)
您可以做的一件事是使用-link
选项链接到这些类的官方Javadoc:
javadoc -sourcepath src -link http://download.oracle.com/javase/6/docs/api com.example.test
这将允许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() {
...
}
}
[编辑]
@see
标记用于说明。 Javadoc应该自动生成一个“Specified By”链接,所以你可以完全省略Javadoc注释。