2017-01-22 1 views
0

Je fais une affectation qui me demande de remplacer la méthode égale d'une classe maison.Comment spécifier les deux objets lors de la substitution de la méthode égale?

Les instructions sont les suivantes:

Deux maisons sont égaux lorsque leurs zones de construction sont égaux et leur statut de piscine est le même

Jusqu'à présent, ce que je l'ai écrit:

@Override 
public boolean equals(Object other) { 
    if (other instanceof House) { 
     House otherHouse = (House) other; 
     return otherHouse.calcBuildingArea() == ??? 
      && otherHouse.mPool == ??? 
    } else { 
     return false; 
    } 
} 

maintenant, je ne sais pas quoi écrire après les signes ==. Je ne sais pas comment spécifier l'objet qui appelle la méthode.

+1

Vous pouvez utiliser le mot clé "this" pour référencer l'objet actuel. –

+0

Pouvez-vous me montrer comment vous écrivez cette ligne? Je suis un peu nouveau à cela ... merci –

Répondre

1

Si vous appelez une méthode sans spécifier d'objet, la méthode sera appelée sur l'objet actuel. Vous pouvez donc écrire

return otherHouse.calcBuildingArea() == calcBuildingArea() 
     && otherHouse.mPool == mPool; 

ou si vous voulez faire belle et claire et explicite, vous pouvez écrire

return otherHouse.calcBuildingArea() == this.calcBuildingArea() 
     && otherHouse.mPool == this.mPool; 

Notez également que cela suppose que mPool est d'un type primitif ou d'un type enum . Si c'est un type de référence, tels que String, vous devrez peut-être invoquer sa méthode equals comme

return otherHouse.calcBuildingArea() == calcBuildingArea() 
     && otherHouse.mPool.equals(mPool); 

ou même plus nul amical

return otherHouse.calcBuildingArea() == calcBuildingArea() 
     && Objects.equals(otherHouse.mPool, mPool); 
+0

Wow; réponse étonnante –

0

Comment cela?

return otherHouse.calcBuildingArea() == this.calcBuildingArea() 
     && otherHouse.mPool == this.mPool 
+0

Vous devriez vérifier que 'otherHouse' est en fait une' House'. – ChiefTwoPencils

+0

@ChiefTwoPencils Le code pour effectuer cette vérification particulière est déjà dans la question. OP voulait seulement savoir quoi écrire sur la ligne avec les marques '???' dans la question. Cette réponse est correcte. –

+0

@ChiefTwoPencils Je répondais juste à la question spécifique de Pshemo sur ce qui devrait être à la place de ???. ce code est déjà à l'intérieur du bloc if pour assurer que l'autre est une maison. – Shiping