Mar*_*ark 516 html java javadoc
我有一个小代码示例,我想包含在方法的Javadoc注释中.
/**
* -- ex: looping through List of Map objects --
* <code>
* for (int i = 0; i < list.size(); i++) {
* Map map = (Map)list.get(i);
* System.out.println(map.get("wordID"));
* System.out.println(map.get("word"));
* }
* </code>
*
* @param query - select statement
* @return List of Map objects
*/
Run Code Online (Sandbox Code Playgroud)
问题是代码示例显示在Javadoc中,没有换行符使其难以阅读.
-- ex: looping through List of Map objects -- for (int i = 0; i list.size(); i++) { Map map = (Map)list.get(i); System.out.println(map.get("wordID")); System.out.println(map.get("word")); }
Parameters
query - - select statement
Returns:
List of Map objects
Run Code Online (Sandbox Code Playgroud)
我想我错误地认为代码标记会处理换行符.在Javadoc注释中格式化代码示例的最佳方法是什么?
Fab*_*eeg 728
除了已经提到的<pre>标签之外,您还应该使用@codeJavaDoc注释,这将使HTML实体问题(特别是泛型)的生活变得更加容易,例如:
* <pre>
* {@code
* Set<String> s;
* System.out.println(s);
* }
* </pre>
Run Code Online (Sandbox Code Playgroud)
将提供正确的HTML输出:
Set<String> s;
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
省略@code块(或使用<code>标记)将导致HTML如下:
Set s;
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
(有关参考,可以在此处找到Java SE 8标记描述:Javadoc标记)
小智 162
我在javadoc评论中包含一个特定的代码示例时非常艰难.我想分享这个.
请注意以下事项:
<code>- tag来防止大括号被解释{@code ...}- 标记来获取输出中包含的泛型@Override通过" {@literal @}Override" 转义@符号,因为javadoc生成器"倾斜",因为@直接在一个开放的大括号之后{@code和{@literal,以补偿内部空间并保持对准javadoc代码:
/** this methods adds a specific translator from one type to another type. `
* i.e.
* <pre>
* <code>new BeanTranslator.Builder()
* .translate(
* new{@code Translator<String, Integer>}(String.class, Integer.class){
* {@literal @}Override
* public Integer translate(String instance) {
* return Integer.valueOf(instance);
* }})
* .build();
* </code>
* </pre>
* @param translator
*/
Run Code Online (Sandbox Code Playgroud)
打印为
new BeanTranslator.Builder()
.translate(
new Translator<String, Integer>(String.class, Integer.class){
@Override
public Integer translate(String instance) {
return Integer.valueOf(instance);
}})
.build();
Run Code Online (Sandbox Code Playgroud)
Ste*_* B. 41
java源代码有很多很好的例子.这是"String.java"负责人的一个例子:
....
* is equivalent to:
* <p><blockquote><pre>
* char data[] = {'a', 'b', 'c'};
* String str = new String(data);
* </pre></blockquote><p>
* Here are some more examples of how strings can be used:
* <p><blockquote><pre>
* System.out.println("abc");
* String cde = "cde";
* System.out.println("abc" + cde);
* String c = "abc".substring(2,3);
* String d = cde.substring(1, 2);
* </pre></blockquote>
...
Run Code Online (Sandbox Code Playgroud)
Rul*_*ule 14
你需要<pre></pre>换行符的标签,以及{@code ... }用于泛型的内部标签.但是,不允许将开口支架放在与<generic>标签相同的线上,因为这样一切都将再次显示在1行上.
显示在一行:
* ..
* <pre>
* {@code
* public List<Object> getObjects() {
* return objects;
* }
* </pre>
* ..
Run Code Online (Sandbox Code Playgroud)
显示换行符:
* ..
* <pre>
* {@code
* public List<Object> getObjects()
* {
* return objects;
* }
* </pre>
* ..
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是当你粘贴右括号时{@code,会显示:
* ..
* <pre>
* {@code
* public List<Object> getObjects()
* {
* return objects;
* }
* }
* </pre>
* ..
Run Code Online (Sandbox Code Playgroud)
输出:
public List<Object> getObjects()
{
return objects;
}
}
Run Code Online (Sandbox Code Playgroud)
Jin*_*won 10
/**
* <blockquote><pre>
* {@code
* public Foo(final Class<?> klass) {
* super();
* this.klass = klass;
* }
* }
* </pre></blockquote>
**/
Run Code Online (Sandbox Code Playgroud)
<pre/> 是保留线路所必需的.{@code 必须有自己的路线<blockquote/> 只是为了缩进.public Foo(final Class<?> klass) {
super();
this.klass = klass;
}
Run Code Online (Sandbox Code Playgroud)
正确代码的最低要求是<pre/>和{@code}.
/**
* test.
*
* <pre>{@code
* <T> void test(Class<? super T> type) {
* System.out.printf("hello, world\n");
* }
* }</pre>
*/
Run Code Online (Sandbox Code Playgroud)
产量
<T> void test(Class<? super T> type) {
System.out.printf("hello, world\n");
}
Run Code Online (Sandbox Code Playgroud)
并且可选的周边<blockquote/>插入缩进.
/**
* test.
*
* <blockquote><pre>{@code
* <T> void test(Class<? super T> type) {
* System.out.printf("hello, world\n");
* }
* }</pre></blockquote>
*/
Run Code Online (Sandbox Code Playgroud)
产量
<T> void test(Class<? super T> type) {
System.out.printf("hello, world\n");
}
Run Code Online (Sandbox Code Playgroud)
插入<p>或包围<p>并</p>产生警告.
Nol*_*uen 10
从 Java 18 ( JEP 413 ) 开始,您可以使用@snippet标签:
/**
* -- ex: looping through List of Map objects --
* {@snippet :
* for (int i = 0; i < list.size(); i++) {
* Map map = (Map)list.get(i);
* System.out.println(map.get("wordID"));
* System.out.println(map.get("word"));
* }
* }
*
* @param query - select statement
* @return List of Map objects
*/
Run Code Online (Sandbox Code Playgroud)
我能够使用代码 1 中显示的以下 snip-it 生成漂亮的 HTML 文件。
* <pre>
* {@code
* A-->B
* \
* C-->D
* \ \
* G E-->F
* }
*</pre>
Run Code Online (Sandbox Code Playgroud)
(代码 1)
正如预期的那样,代码 1 变成了图 1 中生成的 javadoc HTML 页面。
A-->B
\
C-->D
\ \
G E-->F
Run Code Online (Sandbox Code Playgroud)
(图。1)
但是,在 NetBeans 7.2 中,如果您按 Alt+Shift+F(重新格式化当前文件),则代码 1 会变成代码 2。
* <
* pre>
* {@code
* A-->B
* \
* C-->D
* \ \
* G E-->F
* }
* </pre>
Run Code Online (Sandbox Code Playgroud)
(代码 2)
第一个<pre>现在被分成两行。代码 2 生成生成的 javadoc HTML 文件,如图 2 所示。
< pre> A-->B \ C-->D \ \ G E-->F
Run Code Online (Sandbox Code Playgroud)
(图2)
Steve B 的建议(代码 3)似乎给出了最好的结果,并且即使在按下 Alt+Shift+F 后仍保持按预期格式化。
*<p><blockquote><pre>
* A-->B
* \
* C-->D
* \ \
* G E-->F
* </pre></blockquote>
Run Code Online (Sandbox Code Playgroud)
(代码 3)
使用代码 3 产生与图 1 相同的 javadoc HTML 输出。
这是我的两分钱。
正如其他答案已经指出的那样,您应该<pre> </pre>与{@code }.
pre和{@code}<pre>并</pre>防止您的代码折叠成一行;{@code }可以防止<,>以及介于两者之间的所有内容消失。当您的代码包含泛型或 lambda 表达式时,这尤其有用。注释问题
当您的代码块包含注释时可能会出现问题。这可能是因为当该@符号出现在 Javadoc 行的开头时,它被视为一个 Javadoc 标记,如@param或@return。例如,此代码可能会被错误解析:
/**
* Example usage:
*
* <pre>{@code
* @Override
* public void someOverriddenMethod() {
Run Code Online (Sandbox Code Playgroud)
在我的情况下,上面的代码将完全消失。
要解决此问题,该行不得以@符号开头:
/**
* Example usage:
*
* <pre>{@code @Override
* public int someMethod() {
* return 13 + 37;
* }
* }</pre>
*/
Run Code Online (Sandbox Code Playgroud)
请注意,@code和之间有两个空格@Override,以使内容与下一行对齐。在我的情况下(使用 Apache Netbeans)它被正确呈现。