¿Kotlin estructural equality check super types?

Leí un poco más sobre mi tema y solo quiero asegurarme de que entiendo esto correctamente. Parece que la respuesta es que todavía tenemos que anular iguales en la class para definir qué es la verificación estructural de igualdad. Entonces, en otras palabras, si queremos verificar al customer1 == customer2 , primero debemos definir qué igualdad estructural es para el Customer mediante la implementación de iguales, y en ese punto Kotlin usará nuestra implementación por medio del operador == .

Entonces, en este caso, si el Customer henetworkinga de Person y también queremos realizar una verificación de igualdad estructural utilizando properties de Person entonces implementaríamos eso en el método de equals(Object object) .

Entonces, en otras palabras, si queremos verificar al cliente1 ==cliente2, primero debemos definir qué igualdad estructural es para el Cliente mediante la implementación de iguales, y en ese punto Kotlin usará nuestra implementación por medio del operador ==.

Sí. Si el Customer es una data class , entonces obtiene la implementación de equals automática, de lo contrario, debe definirla explícitamente.

Entonces, en este caso, si el Cliente henetworkinga de Persona y también queremos realizar una verificación de igualdad estructural utilizando properties de Persona, entonces implementaríamos eso en el método de Iguales (Objeto Objeto).

De nuevo, sí (use Any? lugar de Object ), tal como lo haría en Java, y es … complicado. Consulte https://stackoverflow.com/a/7798706/9204 y https://stackoverflow.com/a/13163898/9204 y los artículos vinculados a partir de ellos para get más información.

Añadiré que el uso de Kotlin del término "igualdad estructural" no es el habitual. Por lo general, se reserva para los casos en que se comtesting la igualdad comparando todos los campos (relevantes) para la igualdad, como en data class , no "lo que sea equals a hacer".

  • Cómo usar Mockito para Kotlin Fragment / Activity para simular kotlinx.android.synthetic views
  • La mejor forma de usar BuffenetworkingReader en Kotlin
  • Kotlin / Java - Datos de la database de testing proporcionados REST API
  • Cómo establecer el detector de clics y pasar el valor de los campos de text de edición para ver el model utilizando el data binding
  • ¿Cómo multiplicar nullsafe flotar en kotlin?
  • ¿Cómo permitir que una class de datos implemente Interfaz / extiende properties de Superclass en Kotlin?
  • MQTT Android en modo Doze (Android 7.0)
  • Una alternativa a la class de Matemáticas para Flotadores
  • Proporcionar una instancia genérica en Kotlin & Guice
  • Cómo usar con envoltorios pnetworkingeterminados?
  • ¿Cuál es la causa más probable de que las excepciones escapen misteriosamente de un bloque try-catch en este caso?