Imaginez un en option.fnullable code> Vérifiez l'affectation à un String CODE>: String result = Optional.ofNullable(class1)
.map(Class1::getClass2)
.map(Class2::getResult);
3 Réponses :
Si vous voulez résultat code> pour être null si quelque chose le long de la voie retourne null, alors do orelse (null) code>
Le type de retour de Ceci est la implémentation code> code> si le Donc, appeler Voyons la différence: p> sortie: p> avec sortie: p> tout en utilisant sortie: p> afin que vous puissiez voir qu'il existe différents objectifs de ces méthodes. P> Et la réponse à votre commentaire: p> " est-il un moyen d'appeler get () et également appeler Orelse () dans la même chaîne? Strong>" p> mappe code> est en option code>, afin d'obtenir une valeur réelle que vous devez appeler orelse code> avec le type de retour de t code>. en option code>: p> tostring code> Vous n'obtiendrez jamais la valeur réelle, mais une valeur enveloppée sur en option code>, tandis que orelse code> vous retournera la valeur par défaut fournie. Valeur. P> avec null code>: p> orelse code>: /**
* If a value is present, returns the value, otherwise returns
* {@code other}.
*
* @param other the value to be returned, if no value is present.
* May be {@code null}.
* @return the value, if present, otherwise {@code other}
*/
public T orElse(T other) {
return value != null ? value : other;
}
Je comprends ajouter l'orelse ("") comme cela affectera un résultat à un vide Chaîne. P>
Cela ne sonne pas comme si vous me le compreniez parce que ce n'est pas une bonne description de ce qui se passe.
Facultatif.Orelse Code> Est-ce que ce qui suit: Si la facultative contient une valeur, renvoyez cette valeur. Si cela ne contient pas de valeur, renvoyez tout argument que vous avez donné. P>Il est sémantiquement équivalent aux éléments suivants: p>
xxx pré> appelant
Tostring code>, alors qu'il satisfera le compilateur, estpas fort> ce que vous voulez faire. Vous convertissez l'objet code> en option EM> en option em> à une chaîne, ne pas obtenir la chaîne de l'intérieur! Bien que votre chaîne soit incluse em>, ceci est uniquement à cause de la manière dont les développeurs JDK ont décidé de mettre en œuvre Tostring code>. Ils n'auraient également pas à ne pas avoir fourni de mise en œuvre, vous laissant avec juste le Comportement par défaut . p>appelant
Tostring code> sur unen option code> doit fondamentalement ne jamais être invoqué à l'extérieur de la journalisation. Il suffit de déboguer des informations. Si vous le faites, alors des informations sur le wrapper code> en option (code> en option seront également imprimées, ce qui n'est certainement pas ce que vous voulez. P>System.out.println(Optional.empty()); // Optional.empty System.out.println(Optional.of("foo")); // Optional[foo]
Je ne suis pas sûr de comprendre votre question entièrement. Mais la classe code> en option > est conçue pour contenir une valeur ou non, et est souvent utilisée comme alternative à
null code>. La méthode code> mappe code> ne renvoie pas une chaîne code> (correspondante> (car si elle l'a fait, la valeur de retour pourrait êtrenull code>), mais renvoie plutôt unEn option code> contenant la nouvelle valeur. Afin d'obtenir le résultat, vous pouvez appelerget () code>, qui renvoie également la chaîne résultante, mais pourrait également lancer unnosuchelementException code>. Pour revenir à la valeur résultante ou à une valeur de repli, vous devez appelerorelse (FallbackValue) code>.Tostring CODE> renvoie une représentation de la facultative non de la valeur contenue, le cas échéant.@MCeMperor est là un moyen d'appeler
get () code> et également appelerorelse () code> dans la même chaîne?@Sotiriosdelimanolis merci - je comprends que maintenant et cela semble
obtenir () code> est ce que je veux. Mais pour combiner avec une clauseorelse () code> au cas où il n'a pas de valeur.