Puis-je nulle-vérifier en ligne?
J'ai une commande en Java qui ressemble à quelque chose comme ci-dessous:
Foo f = new Foo();
String string = f.format(new Bar().getSelection());
//^ may be null
Parfois, il est possible que mon Bar
objet renvoie la valeur null, c'est par la conception.
Pour moi, la chose naturelle à faire est de diviser les commandes sur plusieurs lignes et de faire un null-vérifier séparément, tels que:
Foo f = new Foo();
BarSel bs = new Bar().getSelection();
String string = "";
if (bs != null) {
string = f.format(bs);
//continue...
}
Cependant, je me demandais si il existe un moyen de faire cela en une seule ligne? Est-il possible de null-vérifier objets en ligne?
Je crois me souvenir de lecture à propos d'être en mesure d'utiliser le point d'interrogation, mais je ne m'en souviens plus de la syntaxe exacte et j'ai peut-être mal à propos. Notez que je ne parle pas à l'opérateur ternaire, même si c'est une autre approche valable.
OriginalL'auteur Redandwhite | 2012-09-10
Vous devez vous connecter pour publier un commentaire.
Je pense que vous vous souvenez le elvis opérateur ( http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html ) qui a été rejeté ( https://blogs.oracle.com/darcy/entry/project_coin_final_five ) à partir d'un projet de pièce de monnaie.
Cependant, le jakarta commons ont nvl-comme des fonctions telles que http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringUtils.html#defaultString(java.lang.String), Même si ces fonctions ne sont pas standard de java, ils se retrouvent dans la plupart des programmes comme dépendance au de certains de la bibliothèque.
Le problème que vous avez est une commune lors de la conception d'une fonction avec une nulle valide résultat: Vous avez du document et le cas particulier de partout. Je peux très bien vous garantis que quelqu'un mess cette place dans l'entretien, résultant en fausse pointeur null exceptions. C'est pourquoi je voudrais, en général, de recommander des dessins qui ne renvoie pas null.
OriginalL'auteur hyperman
Avec le opérateur ternaire :
OriginalL'auteur gontard
Je suis en retard pour le jeu, mais je voulais quelque chose de similaire, et a trouvé l'utilisation de Java 8 En option classe. Solution pour l'énoncé du problème en question:
OriginalL'auteur holmis83
pas en java, mais certains JVM en fonction des langues ( à noter: groovy ) null sûr de déréférencement:
http://groovy.codehaus.org/Null+Objet+Pattern
Il est possible ti mettre en œuvre avec la JVM, mais pas en java. Si vous pouvez mélanger groovy et java, groovy compile lui-même à des classes java et est exécuté sur la jvm. ( être capable de les utiliser de nice syntaxe de sucre et de des goodies comme des fermetures d'entraîner le développement d'une alternative JVM langues)
Je voulais dire, l'Objet Nul motif peut être mis en œuvre en java, pas le nul de la sécurité de déréférencement.
bien sûr. rien ne vous empêche de le faire
OriginalL'auteur Konstantin Pribluda
Vous pouvez utiliser l'opérateur ternaire.
string = bs != null ? f.format(bs) : "";
Ce serait vous donner un littéral de chaîne vide si le bs n'est pas nulle. Ou vous pouvez simplement utiliser:
if (bs != null) string = f.format(bs);
OriginalL'auteur Magicode
OriginalL'auteur bigGuy
D'une autre façon avec le opérateur ternaire:
OriginalL'auteur simhumileco