如何在kotlin kDoc中使用@link和@code

hum*_*zed 44 documentation kotlin kdoc

我正在尝试记录一个方法并尝试使用@link@codeJavaDoc中一样.

我知道在kotlin有一个kDoc,但我找不到它们或至少有类似的东西.

hum*_*zed 81

@link并且@code在kDoc中不存在,但可以很容易地被内联标记替换.

来自KotlinDoc 链接到元素

内联标记

对于内联标记,KDoc使用常规Markdown语法,扩展为支持用于链接到代码中其他元素的简写语法.

链接到元素

要链接到另一个元素(类,方法,属性或参数),只需将其名称放在方括号中:

[foo]为此目的使用该方法.

如果要为链接指定自定义标签,请使用Markdown参考样式语法:

使用[this method][foo]用于这一目的.您还可以在链接中使用限定名称.请注意,与JavaDoc不同,限定名称始终使用点字符来分隔组件,甚至在方法名称之前:

使用[kotlin.reflect.KClass.properties]枚举类的属性.链接中的名称使用相同的规则进行解析,就好像在要记录的元素中使用了名称一样.特别是,这意味着如果您已将名称导入当前文件,则在KDoc注释中使用它时无需完全限定它.

请注意,KDoc没有任何语法来解析链接中的重载成员.由于Kotlin文档生成工具将函数的所有重载文档放在同一页面上,因此链接无需识别特定的重载函数.

  • 对于其他任何努力解决非静态方法的人来说,你不能只做你需要做的[class.methodName] [full_package_location.methodName] (6认同)
  • @hmac 是正确的,但是您也可以将方法名称添加到您的导入中。IDE 不会为您提供智能感知选项来为您执行此操作,但它确实有效。 (4认同)

Ary*_*tey 24

For {@link SomeClass}in Java 映射到[SomeClass]Kotlin

因为{@code true}在 Java 中映射到 Kotlin 中的 `true`


Jam*_*ond 19

看来我们应该只使用 markdown 超链接,而不使用任何特殊标签,例如@see@link

/**
 * This is a doc.
 *
 * See [this](https://google.com)
 * And [this](https://stackoverflow.com)
 */
fun myfun() {}
Run Code Online (Sandbox Code Playgroud)

该文档在 IDE 中以以下方式呈现:

在 IDE 中呈现文档


Mic*_*fel 13

阿图尔给出的答案总体上是一个很好的提示,但结果是错误的。至少 IntelliJ IDEA 不会理解结果。Markdown 链接格式[]()在主评论文本中使用很好,但不适用于@see标签中的外部链接。对于那些,您需要与 Java 中相同的语法:

/**
 * Do something.
 *
 * @see <a href="/sf/ask/3163675931/">External links in kdoc</a>
 */
Run Code Online (Sandbox Code Playgroud)


hb0*_*hb0 11

要引用方法,请使用

/**
 * When the configuration succeeds **[MyCallback.onConfigured]** is called.
 */
class MyClass(myCallback: MyCallback) {
Run Code Online (Sandbox Code Playgroud)

使用变量/参数不起作用

/**
 * When the configuration succeeds **[myCallback.onConfigured]** is called.
 */
class MyClass(myCallback: MyCallback) {
Run Code Online (Sandbox Code Playgroud)


sza*_*ske 10

我在 Mac 上使用 Android Studio 3.5.2 对此进行了一些挣扎。这对我有用:

/**
* [Your fully-qualified class name.function name]
*/
Run Code Online (Sandbox Code Playgroud)

如果我不使用完全限定名称 Kdoc 会抱怨它是一个未解析的引用。我无法弄清楚的是如何实际使用链接本身。为此,您需要按住 COMMAND 键(在 Mac 上),然后链接将处于活动状态。

  • 如果您不想使用完全限定的类名,请导入这些类,然后您可以仅通过类名来引用它们。 (3认同)

小智 8

如何留下课程链接的示例:

/**
 * [YourClass] Methods
 * */
Run Code Online (Sandbox Code Playgroud)

也有方法调用

/**
 * [YourClass.someMothod] Methods
 * */
Run Code Online (Sandbox Code Playgroud)

真实例子:

 /**
 * [BaseActivity] Methods
 * */
override fun initVars() {
    //Just Sample
}

/**
 * [MainContract.View] - Overrides
 * */
override fun handleConnectionMassage(isShow: Boolean) {
    //Just Sample
}
Run Code Online (Sandbox Code Playgroud)


Lu5*_*u55 6

至于@code你应该使用Markdown 语法(因为 KDoc 是 Markdown 的扩展版本):

要在 Markdown 中生成代码块,只需将代码块的每一行缩进至少 4 个空格或 1 个制表符。

/**
 * Some code sample:
 * 
 *    Set<String> s;
 *    System.out.println(s);
 */
class Scratch
Run Code Online (Sandbox Code Playgroud)


Art*_*hev 5

您可以使用Java编写代码并将类转换为Kotlin。

/**
 * @see <a href="http://somelink.com">link</a>
 */
public class Some {
}
Run Code Online (Sandbox Code Playgroud)

将被转换为

/**
 * @see [link](http://somelink.com)
 */
class Some
Run Code Online (Sandbox Code Playgroud)