如何在javadoc代码块中显示泛型?

时间:2014-12-21 19:18:02

标签: java generics javadoc

我有一个javadoc代码块,我想写一个包含这样的泛型的代码示例:

public interface SomeInterface <T> { }
public interface SomeInterface extends SomeOtherInterface<T> { }

这是我的javadoc块:

  /**
   * Get the Generic Type T of a Type (Class/Interface) or extended/inherited Subtype: 
   * <pre>
   * {@code
   * public interface SomeInterface <T> { }
   * public interface SomeInterface extends SomeOtherInterface<T> { }
   * }
   * </pre>
   * @param implType
   * @param parentType
   * @return
   */
  public static JClassType findGenericType(JClassType implType, JClassType parentType) { ... }

javadoc输出是:

Get the Generic Type T of a Type (Class/Interface) or extended/inherited Subtype:


 public interface SomeInterface  { }
 public interface SomeInterface extends SomeOtherInterface { }
 }

Parameters:
implType
parentType
Returns:

输出中缺少Generic。

如何让javadoc正确显示泛型?

4 个答案:

答案 0 :(得分:5)

Java doc呈现为HTML,因此尖括号(<>)之间的任何内容都将被解释为HTML标记,并且不会作为文本打印。 您可以使用&lt;&gt;分别呈现HTML <>

 /**
   * Get the Generic Type T of a Type (Class/Interface) or extended/inherited Subtype: 
   * <pre>
   * {@code
   * public interface SomeInterface &lt;T&gt; { }
   * public interface SomeInterface extends SomeOtherInterface&lt;T&gt; { }
   * }
   * </pre>
   * @param implType
   * @param parentType
   * @return
   */

答案 1 :(得分:1)

JavaDoc使用html进行渲染。因此,如果您希望在JavaDoc中出现左角度大括号(&lt;)和右角度大括号(&gt;),则需要使用&lt;表示左角度大括号,&gt;表示右侧大括号角撑。例如:

/**
* Get the Generic Type T of a Type (Class/Interface) or extended/inherited Subtype: 
* <pre>
* {@code
* public interface SomeInterface &lt;T&gt; { }
* public interface SomeInterface extends SomeOtherInterface&lt;T&gt; { }
* }
* </pre>
* @param implType
* @param parentType
* @return
*/

有关详细信息,请参阅the wikipedia article

答案 2 :(得分:0)

怎么样?

/**
 * Explain something...
 * <pre>
 * public interface SomeInterface &lt;T&gt; { }
 * </pre>
 */

这是因为JavaDoc是以HTML格式呈现的,因此必须对<>进行转义才能正确呈现。

编辑:在OP澄清后我改变了答案。

答案 3 :(得分:0)

实际上,您可以将泛型放入Javadoc本身。我知道这不是有效的HTML,我认为javadoc处理器对此具有特殊情况处理。

使用您的示例: /** * @param <T> the type */ public interface SomeInterface <T> { }

来源:Any plan to update this gem to be compatible with rails 5.2?