Comment empêcher la vérification nulle avant égal
Je trouve des trucs comme ça plutôt ennuyeux et laid dans equals
méthodes:
if (field == null)
{
if (other.field != null)
return false;
}
else if ( ! field.equals(other.field))
return false;
En C# je pourrais l'ai fait ceci:
if( ! Object.Equals(field, other.field))
return false;
Est-il quelque chose de similaire en Java, ou quelle est la meilleure façon de faire ce genre si la chose?
source d'informationauteur Svish
Vous devez vous connecter pour publier un commentaire.
Utilisation commons-lang:
Code Source:
De Apache
http://commons.apache.org/lang/
C'est à peu près équivalente à ce que vous faites en C#
Java 7 offre java.util.Objets.est égal à.
Goyave de l'égalité qui fait ceci :
ou objet null modèle
Goyave a aussi le peu liés comparaison de la chaîne d' et un tas d'autres goodies.
Je voudrais écrire de cette façon:
qui n'est pas aussi élégant que le code C# de la ligne, mais beaucoup plus court que la si l'arbre que vous avez posté.
J'accepte toutes les réponses techniquement. Pratiquement, je ne vais pas les utiliser dans le code que j'ai sous contrôle parce que toutes les solutions apportées sont de travail à travers le cœur du problème: null-valeurs. GARDEZ VOTRE MODÈLE de BASE GRATUITE à PARTIR de VALEURS NULLES, et la question est obsolète dans ce cas.
Au système des frontières comme des bibliothèques tierces qu'on ait affaire à des valeurs null parfois. Ils devraient converties en des valeurs significatives pour le modèle de base. Il y a les donné solutions sont utiles.
Même si Oracle recommande l'égalité des Méthodes pour être null-sécurité, pensez à ce sujet: une Fois que vous accepter les valeurs null de votre modèle, il devient fragile. Les égaux-méthode ne sera pas la dernière méthode où vous pourrez vérifier la valeur null. A vous de gérer la valeur null-chèques dans votre appel de la méthode de la hiérarchie. Les méthodes peuvent ne pas être réutilisable hors de la boîte plus. Bientôt, chaque paramètre sera vérifié pour les nuls.
J'ai vu les deux côtés:
D'un côté le code complet de nulle contrôles, les méthodes qui ne font pas confiance à un seul paramètre de plus et les développeurs qui ont peur d'oublier un null vérifier.
De l'autre côté de code avec plein expressive des déclarations qui font comprendre les affirmations d'avoir le plein fonctionnement des objets qui peuvent être utilisés sans crainte de NullPointerExceptions.
Dans le cadre du Projet de Pièce de monnaie, il y avait une proposition pour l'ajout d'une série de null-sécurité des opérateurs à Java. Malheureusement, ils ne se trouvent pas dans Java 7, peut-être qu'elles apparaissent dans Java 8. Ici est l'idée générale de la façon dont ils fonctionnent
En fait tout le monde suit de là propre manière de le faire et aussi je tiens à vous présenter groovy ici.
Il ya une façon
field == null ? false : true;
//Donc, fondamentalement, il retourne vrai quand il n'est pas null.En groovy, il est nul en sécurité de l'opérateur pour les objets. Prenons un exemple pour la classe
A a = null
a?.name
//Mentionnées opérateur
?
vérifient si un estnull
ou pas. alors qu'il invoquera le nom.Remarque: je n'ai pas fait de demande de semi colon dans le code comme ceci n'est pas besoin de groovy.
Chaîne.valueOf() permettra de résoudre certains de ces problèmes si l'toString est mis en œuvre pour vos classes. Il va cracher le toString() réponse ou "null" si le pointeur est null.
Utiliser l'opérateur == lorsque vous vérifiez pour les références de l'objet, si les deux références se réfère même objet, il retournera true. Sinon, si vous êtes à la recherche pour le contenu de l'objet puis aller avec .méthode equals d'objets.
Null signifie qu'il n'a aucun souvenir de l'emplacement donné dans le tas. De sorte qu'il peut être simplement vérifié avec le '==' opérateur.