ich die folgende Fallklasse habenFall Klasse Gleichheit für Arrays
case class Something(val input : Array[Int], val output : Array[Int] = null, val remainder : Array[Int] = null, val next : Something = null) {
override def equals(thatGeneric: scala.Any): Boolean = {
if(!thatGeneric.isInstanceOf[Something])
return false
val that = thatGeneric.asInstanceOf[Something]
val thisInput = if(this.input == null) null else this.input.deep
val thatInput = if(that.input == null) null else that.input.deep
val thisOutput = if(this.output == null) null else this.output.deep
val thatOutput = if(that.output == null) null else that.output.deep
val thisRemainder = if(this.remainder == null) null else this.remainder.deep
val thatRemainder = if(that.remainder == null) null else that.remainder.deep
return (thisInput,thisOutput,thisRemainder,this.next) == (thatInput,thatOutput,thatRemainder,that.next)
}
/**
* TODO fix hashcode in case I want to use this in collection
* @return
*/
override def hashCode(): Int = super.hashCode()
}
Ich weiß, dass Fall Klassen sollen Ihre equals und hashCode Methoden für Sie erstellt haben, aber für Arrays da ==
nicht gelingt, dann denke ich, Deshalb funktioniert es nicht für meine Fallklasse.
Gibt es eine bessere Möglichkeit, meine equals- und hashCode-Methoden nicht manuell für meine Fallklasse schreiben zu müssen?
Anmerkung: Ich auch willkommen Beratung darüber, warum/wie mein Strom verbessern Methode equals
Edit: Sie im Allgemeinen die Hinweise über meine Verwendung von Fallklasse zu schätzen wissen, aber meine Frage war im Grunde: Angenommen, Sie das Bedürfnis haben von einem Array in Ihrer Fall-Klasse, wie vermeiden Sie, Ihre eigenen equals und hashCode zu rollen. (Wenn die Antwort ist, dass es unmöglich ist und ich brauche eine Liste, dann ist das die Antwort, nur nicht sicher, dass das der Fall ist.)
Gibt es einen Grund, warum Sie ein 'Array' und nicht eine' List' verwenden möchten? Eine Fallklasse soll traditionell eine unveränderbare Datenstruktur enthalten. –