Why getting class in Kotlin using double-colon (::)?

fikr4n :

We know that double-colon (::) is used to get function (callable) reference in Kotlin, e.g. String::compareTo, "string"::compareTo.

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
Miha_x64 :

:: in Kotlin is about meta-programming, including method references, property references and class literals. See discussion about class literals.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=427799&siteId=1