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.

  • ¿Cómo se configura una construcción multiplataforma de Kotlin?
  • No se puede llamar a una function desde el bloque de inicio debido a la propiedad val
  • libGDX no puede dibujar spline
  • Kotlin de Java: ¿admite el campo o no?
  • ¿Cómo las funciones de almacenamiento en la colección estática afectarán el sistema?
  • Firestre solo me permite cargar un documento
  • Jackson ready only collections
  • ¿Cómo puedo get el nombre de una propiedad de Kotlin?
  • Propiedades del constructor Kotlin y llamar a diferentes constructores de superclass
  • Spring Boot .mustache Extensión de file
  • Especificación Jpa para encontrar un subset del valor del campo