'En option.get()' sans 'isPresent()' vérifier
J'ai la suite de la recherche de code en Java:
return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();
J'étais désireux de trouver de la colonne par le nom et le retour premier trouvé.
Je comprends il y a un cas où rien trouvé et il doit être traité, mais comment?
Est-ce qu'il veut par cette prestation de serment:
'Optional.get()' without 'isPresent()' check
?
Comment réparer? Je voudrais revenir null
si rien trouvé.
Mise à JOUR
Okay, Okay, j'ai juste ne le savais pas, que findFirst()
retourne Optional
.
- Notez que vous ne devriez pas utiliser
$
comme un identificateur en Java: JLS Sec 3.8: "Le signe de $ doit être utilisé uniquement dans mécaniquement code source généré, ou, rarement, à l'accès pré-existant noms sur les anciens systèmes."
Vous devez vous connecter pour publier un commentaire.
Remplacer
get()
avecorElse(null)
.orElse
commence par "ou"?else
est un mot-clé.orElse
au lieu deget
parce queget
va lever une exception si la valeur est null.Supplier<T>
, alors queorElse()
prend unT
. Ce ne sont pas équivalentes.Renvoie la valeur si elle est présente, sinon renvoie
null
. La documentation dit que l'passées en paramètre peut êtrenull
(ce qui est interdit pourorElseGet
etorElseThrow
).orElse
, donc...