我将鼠标悬停在kotlin / android项目中的ClassName::javaClass
实例上-并查看javaClass
的文档预览:
public val <T : Any> T.javaClass: Class<T>
很抱歉,如果这是一个基本问题,但是如何翻译以上内容?还有什么我可以阅读的资源,可以使我了解这种类型的文档语法?
答案 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