In data classes, the default behavior of the `equals()` method is to check the equality by field values. This works well for primitive fields or fields, whose type overrides `equals()`, but this behavior doesn't work as expected for array fields. By default, array fields are compared by their reference, so overriding `equals()` is highly recommended to ensure a deep equality check. The same applies to the `hashcode()` method. This rule reports an issue if a record class has an array field and is not overriding `equals()` or `hashcode()` methods. == Noncompliant Code Example [source,kotlin] ---- data class Person(val names: Array, val age: Int) {} // Noncompliant ---- == Compliant Solution [source,kotlin] ---- data class Person(val names: Array, val age: Int) { override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false other as Person if (!names.contentEquals(other.names)) return false if (age != other.age) return false return true } override fun hashCode(): Int { var result = names.contentHashCode() result = 31 * result + age return result } } ----