Java: Propre façon d'éviter NullPointerException dans équivaut à des vérifications

J'ai une adresse d'objet que je veux créer une méthode equals pour. J'aurais pu faire très simple, en faisant quelque chose comme ce qui suit (raccourci un peu):

public boolean equals(Object obj) 
{
    if (this == obj)
        return true;

    if (obj == null)
        return false;

    if (getClass() != obj.getClass())
        return false;

    Address other = (Address) obj;

    return this.getStreet().equals(other.getStreet())
        && this.getStreetNumber().equals(other.getStreetNumber())
        && this.getStreetLetter().equals(other.getStreetLetter())
        && this.getTown().equals(other.getTown());
}

Problème est que certains de ces peut être null. Je vais en d'autres termes obtenir un NullPointerException si il n'y a pas de rue de la lettre à cette adresse.

Comment puis-je écrire un moyen propre tout en prenant les valeurs null en compte?

  • à l'aide de @NotNull annotation partout aide certainement. Ainsi fait à l'aide de chaînes vides et des tableaux vides, au lieu de la chaîne null null tableaux pour représenter quelque chose qui est "vide". Une chaîne vide est une chaîne qui ne contient pas de caractère. Un tableau vide est un tableau fait de zéro élément. "null" et les Npe sont extrêmement rares dans notre base de code, où l' @NotNull annotation est utilisée dans chaque classe, nous avons 🙂
  • en outre, le concept de "l'égalité" sur mutable objet n'a pas beaucoup de sens. Vos objets immuables. Interdire la valeur null. Tout sera plus lisse.
  • Bien sûr, et je le ferais si je le pouvais! Le problème est que dans ce cas, ces choses peuvent être inexistante. Par exemple, toutes les adresses ont une lettre, de sorte qu'il doit être null. Sur la question de l'immuabilité, je suis totalement d'accord, mais malheureusement ce n'est pas mon choix. Si c'était à moi, il serait.
InformationsquelleAutor Svish | 2011-04-14