我正在尝试记录一个方法,并尝试使用 @link和 @code,就像在 JavaDoc中一样。
@link
@code
我知道在 Kotlin 有个 KDoc但我找不到他们,或者至少是类似的东西。
@link和 @code在 kDoc 中不存在,但可以很容易地被 内联标记所替代。
来自 KotlinDoc 链接到元素
内联标记 对于内联标记,KDoc 使用常规 降价语法,扩展为 支持链接到代码中其他元素的速记语法。 链接到元素 要链接到另一个元素(类、方法、属性或参数) , 只要把它的名字放在方括号里: 为此使用方法 [foo]。 如果要指定自定义 标签为链接,使用 Markdown 引用样式的语法: 为此目的使用 [this method][foo]。还可以使用限定的 注意,与 JavaDoc 不同,限定名总是 使用点字符来分隔组件,甚至在方法之前 姓名: 使用 [kotlin.reflect.KClass.properties]枚举 使用相同的规则解析链接中的类 在被记录的元素中使用了 意味着如果已将名称导入当前文件,则 在 KDoc 注释中使用它时,不需要完全限定它。 注意,KDoc 没有任何用于解析重载的语法 自从 Kotlin 文档生成工具将 同一页面上函数的所有重载的文档, 属性不需要标识特定的重载函数 工作链接。
内联标记
对于内联标记,KDoc 使用常规 降价语法,扩展为 支持链接到代码中其他元素的速记语法。
链接到元素
要链接到另一个元素(类、方法、属性或参数) , 只要把它的名字放在方括号里:
为此使用方法 [foo]。
[foo]
如果要指定自定义 标签为链接,使用 Markdown 引用样式的语法:
为此目的使用 [this method][foo]。还可以使用限定的 注意,与 JavaDoc 不同,限定名总是 使用点字符来分隔组件,甚至在方法之前 姓名:
[this method][foo]
使用 [kotlin.reflect.KClass.properties]枚举 使用相同的规则解析链接中的类 在被记录的元素中使用了 意味着如果已将名称导入当前文件,则 在 KDoc 注释中使用它时,不需要完全限定它。
[kotlin.reflect.KClass.properties]
注意,KDoc 没有任何用于解析重载的语法 自从 Kotlin 文档生成工具将 同一页面上函数的所有重载的文档, 属性不需要标识特定的重载函数 工作链接。
你可以用 java 编写代码,然后把 class 转换成 Kotlin。
/** * @see <a href="http://somelink.com">link</a> */ public class Some { }
将被转换为
/** * @see [link](http://somelink.com) */ class Some
回答这个问题,阿图尔给出了一个很好的提示,但结果是错误的。至少 IntelliJ IDEA 没有理解这个结果。在主注释文本中使用 []()的标记链接格式很好,但是在 @see标记中使用 没有作为外部链接。对于这些,您需要与 Java 中相同的语法:
[]()
@see
/** * Do something. * * @see <a href="https://stackoverflow.com/q/45195370/2621917">External links in kdoc</a> */
我在 Mac 上的 Android Studio 3.5.2上挣扎了一段时间,这对我很有用:
/** * [Your fully-qualified class name.function name] */
如果我不使用完全限定的名称 Kdoc 会抱怨它是一个未解决的引用。我不明白的是如何使用链接本身。为此,您需要按住 COMMAND 键(在 Mac 上) ,然后链接将处于活动状态。
至于 @code,你应该使用 标记语法(因为 KDoc 是 Markdown 的扩展版本) :
要在 Markdown 中生成代码块,只需将代码块的每一行缩进至少4个空格或1个制表符。
/** * Some code sample: * * Set<String> s; * System.out.println(s); */ class Scratch
在 Java 中的 {@link SomeClass}映射到 Kotlin 的 [SomeClass]
{@link SomeClass}
[SomeClass]
对于在爪哇的 {@code true}地图到“真”在 Kotlin
{@code true}
要引用 一种方法,请使用 同学们:
/** * When the configuration succeeds **[MyCallback.onConfigured]** is called. */ class MyClass(myCallback: MyCallback) {
使用变量/参数 不起作用:
/** * When the configuration succeeds **[myCallback.onConfigured]** is called. */ class MyClass(myCallback: MyCallback) {
示例如何为类保留链接:
/** * [YourClass] Methods * */
也可以使用方法调用
/** * [YourClass.someMothod] Methods * */
真正的例子:
/** * [BaseActivity] Methods * */ override fun initVars() { //Just Sample } /** * [MainContract.View] - Overrides * */ override fun handleConnectionMassage(isShow: Boolean) { //Just Sample }
看起来我们应该使用一个没有任何特殊标签的超链接,比如 @see或者 @link:
/** * This is a doc. * * See [this](https://google.com) * And [this](https://stackoverflow.com) */ fun myfun() {}
这个文档在 IDE 中以如下方式呈现: