val una objetos instanciar inicializar entre diferencia declarar crear como clases clase java operators kotlin

java - una - kotlin clases y objetos



¿Por qué obtener clase en Kotlin usando dos puntos(::)? (2)

Sabemos que los dos puntos dobles ( :: se utilizan para obtener la referencia de la función (llamable) en Kotlin, por ejemplo, String::compareTo , "string"::compareTo .

En Java usamos SomeClass.class y someInstance.getClass() para obtener la clase. ¿Por qué en Kotlin usamos SomeClass::class y someInstance::class mientras que la class no es una función / método?

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


En Kotlin puedes escribir Object::class , que te dará un KClass . KClass no es equivalente a la clase Clase que conocemos de Java. Si desea obtener la clase de clase Java, puede escribir Object::class.java - ie: println("string"::class.java)

También en java, .class no es un método o un miembro, es una directiva especial para que el compilador acceda a la clase. Creo que cada idioma selecciona la sintaxis que tiene más sentido para ella, y los creadores de kotlin decidieron usar ::