【问题标题】:Escape @ Character in JavadocJavadoc中的转义@字符
【发布时间】:2018-05-24 03:41:02
【问题描述】:

我知道以前有人问过这个问题,但那里的答案只适用于较旧的 JVM;我已经 8 岁了。我有一个这样的 javadoc:

 * <pre>
 * {@code
 * 
 * import javax.ws.rs.Path;
 * 
 * import com.ziath.handheldserver.scripts.AbstractHandheldScript;
 * import com.ziath.handheldserver.scripts.valueobjects.ScriptStatus;
 * import com.ziath.handheldserver.scripts.valueobjects.WidgetList;
 * 
 * import org.slf4j.Logger;
 * import org.slf4j.LoggerFactory;
 * 
 * @Path("myBasicScript")

我需要转义“@”符号;我尝试了以下方法:

  • 用 html 表示替换 @,使 @Override 变为 @Override。这只是在 jdocs 中打印 @Override
  • 将@Override 替换为{@literal @}Override。这现在会在 javadocs 中打印 {@literal @}Override。
  • 将@Override 替换为@literal @Override;这不会转义 @ 符号,并且 javadocs 会停止解析。

    有谁知道如何使用 JDK 8 做到这一点?我对它的难度感到惊讶!

【问题讨论】:

  • 您是否使用 IDE 来查看 Javadoc?
  • 没有网络浏览器;铬
  • 我不知道这是否重要,但这在 javadocs 的 package-info.java 部分中
  • 删除{@code ...} 标签并仅使用HTML &lt;pre&gt;...&lt;/pre&gt; 元素怎么样?
  • 您在问什么并不完全清楚。如果只想转义@字符,那么可以使用字符实体&amp;#64;

标签: java java-8 javadoc


【解决方案1】:

我在 JDK 中寻找带有 @ 符号的代码示例。 @SafeVarargs 注释就是这样。它的source code 不使用&lt;code&gt; 块,而是使用&lt;blockquote&gt;&lt;pre&gt;

/**
 * <blockquote><pre>
 * import javax.ws.rs.Path;
 * 
 * import com.ziath.handheldserver.scripts.AbstractHandheldScript;
 * import com.ziath.handheldserver.scripts.valueobjects.ScriptStatus;
 * import com.ziath.handheldserver.scripts.valueobjects.WidgetList;
 * 
 * import org.slf4j.Logger;
 * import org.slf4j.LoggerFactory;
 * 
 * &#064;Path("myBasicScript")
 * </pre></blockquote>
 */

这对我来说适用于 Java 8,而且看起来相当不错。不过,我同意不使用@code 有点奇怪。

【讨论】:

    【解决方案2】:

    您可以使用{@literal @} 来完成此操作,以便在文本中出现一次@ 字符。或者,如果您想在 JavaDoc 中包含代码块并希望 all @ 字符被转义,我建议将 &lt;pre&gt; 块与 {@code} 结合使用,如下所示:

    * <pre>
    * {@code
    * ... my code here...
    * }
    * </pre>
    

    【讨论】:

    • 我做到了;如果您查看我的 javadocs 中的问题,如果我不逃避它,那么它会停止解析,如果我使用 {@literal @} 它会在 javadocs 中打印 {@literal @}。
    • 这很奇怪。我用这种方式已经很久了......也许你遇到了某种错误?您是否检查过您是否正确打开和关闭了&lt;pre&gt; 标签?尝试检查您的 javadoc 日志以查找编译错误,可能还有其他问题导致此问题。
    【解决方案3】:

    您可以使用{@literal @}。这是@ 的示例,但您可以将{@literal} 用于任何特殊字符

    【讨论】:

    • 我做到了;见问题。它在 javadocs 中打印 {@literal @}。我认为这是因为它在 {@code 标记中。示例见下文:import org.slf4j.LoggerFactory; {@literal @}Path("myBasicScript") public class MyBasicScript extends AbstractHandheldScript{ private Logger logger = LoggerFactory.getLogger(MyBasicScript.class);
    猜你喜欢
    • 2011-01-18
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2020-02-28
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多