了解文档语法

时间:2019-02-19 10:25:53

标签: java android kotlin

我将鼠标悬停在kotlin / android项目中的ClassName::javaClass实例上-并查看javaClass的文档预览:

public val <T : Any> T.javaClass: Class<T>

很抱歉,如果这是一个基本问题,但是如何翻译以上内容?还有什么我可以阅读的资源,可以使我了解这种类型的文档语法?

1 个答案:

答案 0 :(得分:1)

public val <T : Any> T.javaClass: Class<T>

这实际上是扩展属性。的工作原理与扩展功能基本相同(实际上,编译器将为继承自Any的任何类型生成扩展获取方法。)

一个简单的例子,没有泛型:

val String.withPrefix: String
    get() = "_$this"

fun test() {
    println("Hello".withPrefix) // prints "_Hello"
}

另一个示例-现在适用于通用类型:

val <T: Number> T.hexValue: String
    get() = convertToHex(this)

fun main(args: Array<String>) {
    val number: Double = 10.0
    println("Hex value of $number is ${number.hexValue}")
}

您要问的构造很奇怪,因为同时连接了泛型和扩展功能。但是,正如您所看到的,实际上只有非常简单的结构-看起来很奇怪。

查看有关扩展程序的更多信息:https://kotlinlang.org/docs/reference/extensions.html#extension-properties

查看有关泛型的更多信息:https://kotlinlang.org/docs/reference/generics.html