Igualdad referencel y estructural en Kotlin

¿Cuál es la diferencia entre la igualdad referencel y la igualdad estructural en Kotlin ?

val a = File("/myfile.txt") val b = File("/myfile.txt") val sameRef = a === b 

y:

  val a = File("/myfile.txt") val b = File("/myfile.txt") val both= a == b 

  • La igualdad referencel === (también llamada identidad ) significa que los pointers para dos objects son los mismos. Es decir, los objects están contenidos en la misma location de memory que nos lleva al hecho de que los pointers hacen reference al mismo object.

    identidad: determina si dos objects comparten la misma dirección de memory

  • La igualdad estructural == , a su vez, significa que dos objects tienen contenido equivalente. Debe especificar cuándo dos objects se deben considerar iguales anulando el método equals () .

    igualdad: determina si dos objects contienen el mismo estado.

Al igual que en Java , en Kotlin no hay equals() específicos equals() y hashCode() generados por defecto (sin considerar las classs de datos ). Por lo tanto, hasta que haya anulado estos methods para su class, ambos == y === realizan una comparación de identidad.

  • El file de cero no se ejecuta en IntelliJ IDEA
  • ¿Cómo usar la anotación Swagger @ApiResponses en Kotlin?
  • java https: // localhost (SSL) - posible sin instalar certs en el cliente?
  • Cómo degradar Kotlin en Intellij 15
  • Cómo registrar los cuerpos de request y respuesta en Spring WebFlux
  • Dagger 2 error: la dependencia "no se puede proporcionar sin un @Inject constructor"
  • Java.lang.ClassNotFoundException: no encontró la class Kotlin
  • Botón Kotlin / Anko enHaga clic en no funcionar
  • Convierta la actividad principal con la barra de acciones / barra de herramientas y el button de acción flotante a Anko
  • Cómo replace :: nuevo en kotlin?
  • Kotlin obtiene valor de JSON