为什么要使用双冒号(::)在Kotlin上课? [英] Why getting class in Kotlin using double-colon (::)?
问题描述
我们知道,双引号(::
)用于获取Kotlin中的函数(可调用)引用,例如String::compareTo
,"string"::compareTo
.
We know that double-colon (::
) is used to get function (callable) reference in Kotlin, e.g. String::compareTo
, "string"::compareTo
.
在Java中,我们使用SomeClass.class
和someInstance.getClass()
来获取类.为什么在Kotlin中我们使用SomeClass::class
和someInstance::class
而class
不是函数/方法?
In Java we use SomeClass.class
and someInstance.getClass()
to get the class. Why in Kotlin we use SomeClass::class
and someInstance::class
while class
is not a function/method?
println(String::compareTo)
// output: fun kotlin.String.compareTo(kotlin.String): kotlin.Int
println("string".compareTo("strong"))
// output: -6
println(String::class)
// output: class kotlin.String
println("string".class)
// compile error
Kotlin中的
推荐答案
::
与元编程有关,包括方法引用,属性引用和类文字.
参见关于类文字的讨论.
::
in Kotlin is about meta-programming, including method references, property references and class literals.
See discussion about class literals.
这篇关于为什么要使用双冒号(::)在Kotlin上课?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!