Scala

Scala

Made by DeepSource

Equality methods overridden in a case class SC-W1074

Bug risk
Critical

Case classes in Scala are good for for modeling immutable data and implement their own equality methods such as equals() and hashCode() depending on the parameters that the class takes. This is similar to Java's record. It is therefore recommended that you do not manually override these methods on your own. If you have to override these methods, consider using a plain class instead of a case class.

Bad Practice

case class C(x: Int) {
  override def equals(obj: Any): Boolean = ...
  override def hashCode(): Int = ...

  // Methods
}

Recommended

case class C(x: Int) {
  // Manually overridden equality methods removed
  // Methods
}

// Alternately, use a normal class
class C(x: Int) {
  override def equals(obj: Any): Boolean = ...
  override def hashCode(): Int = ...

  // Methods
}

References: