Parfois les développeurs vérifie si Strings em> sont valeurs null em>, si oui, définit ces chaînes comme valeur vide: ce que je veux à faire est d'écrire en face si em> déclaration: p> mais ... Tout d'abord - je dois vérifier (comme généralement) si cette chaîne est null pour éviter NullpointerException, donc maintenant, il ressemble à ceci (très moche mais baiser): p> Ma classe a plusieurs champs de cordes et pour tous, je dois préparer cette solution.
Des idées de base pour un code plus efficace? Est-ce un bon moyen de le scrocher à des expressions Lambda et d'itérer tous les champs de chaîne de cette classe? P> P>
6 Réponses :
Je ne connais pas le contexte dans lequel vous pensiez mentionner des flux relatifs à votre question, mais si vous êtes ouvert à la bibliothèque Apache Stringutils, une option serait d'utiliser le Stringutils # ISPTY () Méthode:
if (StringUtils.isEmpty(text)) {
text = null;
}
Juste une opinion, mais en utilisant une bibliothèque tierce partie pour une telle tâche minuscule n'est qu'un déchet.
@nullpoinger en fait, peut-être que Java devrait inclure de telles méthodes directement dans la catégorie code> string code>, qui éliminerait le besoin de bibliothèques tiers. Je conviens que de nombreux cas d'utilisation sont probablement limites.
@TimbieGeleisen Java a inclus des méthodes, en particulier avec les dernières versions. Cependant, surtout ces méthodes Apache avec leur manutention code> NULL code> sont une étape dans la mauvaise direction. Les développeurs doivent éviter null code> au lieu d'utiliser ces méthodes utilitaires.
Vous pouvez faire la même chose en utilisant une instruction IF comme ci-dessous,
if (text != null && text.isEmpty()) { text = null; }
util complet peut éventuellement être string privé checkeemptyandnull (String Text) {si (texte! = null && text.Impty ()) {texte = null; } renvoyer le texte; } code>
texte.equals (null) code> est toujours
false code> et causera une NPE si
texte code> est
null code>. Il suffit d'écrire
texte! = Null code> (mais op a la même erreur)
Je voulais juste dire qu'il peut obtenir la même chose en utilisant une instruction IF et manquez le texte
n'utilise pas SO P> égaux () code> Pour vérifier si une chaîne est
null code>, mais:
if (text != null && text.isEmpty()) {
text = null;
}
Dans votre exemple, si le texte est null, alors texte.equals (null) provoquera une NPE. Vous voudrez quelque chose comme ceci:
public static String setNullOnEmpty(final String text) { return text != null && text.trim().isEmpty() ? null : text; }
Vous avez oublié d'insérer l'instruction code> renvoyer code> dans votre méthode. En tant que note latérale, commençant par JDK 11, vous pouvez utiliser text.isblank () code> au lieu de
texte.trim (). ISPTY () code>.
Bonne prise, merci. Je passe entre Groovy et Java ces derniers temps et Groovy n'exige pas de retour.
Je n'ai pas une meilleure réponse à votre problème exact que ce qui a déjà été posté. Cependant, je voudrais faire preuve de questions fortement pourquoi vous voudriez confondre des cordes vides et des nulls dans les nulls. Les nulls sont généralement une mauvaise idée, une "erreur milliard dollar", pour citer Tony Hoare, qui a lui-même inventé des références nulles. Ce blog post A quelques bons arguments! p>
Avez-vous envisagé d'aller dans la direction opposée, convertissant toutes les cordes NULL aux cordes vides? De cette façon, il vous suffit de traiter des chaînes pour la plupart de votre code et d'arrêter de vous inquiéter des exceptions de pointeur Null. p>
Mieux encore, jetez un coup d'œil sur le type facultatif, qui représente un objet qui peut être présent ou non. Cela a eu lieu à Java 8 comme un meilleur moyen de représenter l'absence que les nulls. Voici un Publication du blog qui l'explique. P>
Une autre alternative utilisant GUAVA's PTTLONULL :
text = Strings.emptyToNull(text);
Pourquoi voudriez-vous le faire opposé à l'utilisation de
en option code>? Pourquoi ne pas essayer d'éliminer NULL en tant que facteur, opposé à une valeur pondérée?
fusionner dans l'extérieur si. Ou écrire un
stringutil.notnullandempty (texte) code> méthode
Où avez-vous obtenu
text.equals (null) code> de? Cette expression est toujours fausse ou jette une NPE.
Avez-vous envisagé d'utiliser Kotlin?
Si (Texte? .Isempty ()! = NULL) CODE>, et vous pouvez même ajouter des méthodes à la classe de chaîne, telles que
String # TODISPLAY () CODE>.
@Vinceemigh j'ai besoin de livrer
null si vide code>