Existe-t-il un moyen efficace d’effectuer une conversion ascendante avec un object facultatif Voici un exemple de code: class A{} class B extends A{} B func(){ //do something return new B(); } Optional func2(){ //do something return Optional.of(new B()); } main() { A a = func(); // Upcasting works fine B b = func(); // Upcasting […]
Je recherche un moyen plus pratique de prouver l’égalité pour une valeur facultative. Voici ce que suggère un article de blog Oracle : Optional maybeUSB = …; maybeUSB.filter(usb -> “3.0”.equals(usb.getVersion()) .ifPresent(() -> System.out.println(“ok”)); IMHO résultats dans quelque chose comme if (maybeUSB.filter(c -> “3.0”.equals(c.getVersion())).isPresent()) { … } Bien sûr, c’est un peu un exemple car il […]
Pour éviter d’appeler get() qui peut get() une exception: if (a.isPresent()) list.add(a.get()); Je peux remplacer cette expression par: a.ifPresent(list::add); Mais que se passe-t-il si je dois effectuer une expression plus large comme if (a.isPresent() && b && c) list.add(a.get()); Est-il possible d’utiliser quand même un formulaire lambda qui atténue un appel à get() ? Mon […]
Je dois effectuer une opération d’ajout sur deux grandes décimales qui sont des options enroulées: Optional ordersTotal; Optional newOrder; Je veux réaliser ordersTotal + = newOrder Il est important de noter que si les deux valeurs sont vides, le résultat doit également être vide (c’est-à-dire non nul). Voici ce que je suis venu avec: ordersTotal […]
Supposons que j’ai ce code dans mon projet: public List getAll(Integer parameter) { if(parameter != null && parameter > -1) { // do something here } } Ma question est la suivante: comment puis-je vérifier avec Optional au lieu d’utiliser if , ou s’il ya autre chose que je pourrais utiliser?
J’ai une Optional que je veux “convertir” en une OptionalInt , mais il ne semble pas y avoir de moyen simple de le faire. Voici ce que je veux faire (exemple artificiel): public OptionalInt getInt() { return Optional.ofNullable(someSsortingng).filter(s -> s.matches(“\\d+”)).mapToInt(Integer::parseInt); } Cependant, il n’y a pas de méthode mapToInt() pour Optional . Le mieux que […]
J’ai une méthode qui prend Ssortingng en entrée et doit également renvoyer une Ssortingng . L’art ASCII suivant présente le stream logique: Option optA = finder.findA(input); optA /\ isEmpty() / \ isDefined() / \ “ERR_1” Option optB = finder.findB(optA.get().bid); / \ isEmpty() / \ isDefined() / \ “ERR_2” opt2.get().id Fondamentalement, je recherche A object qui […]
Considérez ces deux classes class EmailService { public Optional getEmailAlias(Ssortingng email); } enum Queue { public static Optional fromEmailAlias(Ssortingng alias); } La mise en œuvre des méthodes ci-dessus n’est pas importante pour la question, j’ai donc laissé cela de côté pour des raisons de simplicité. Je veux faire ça: emailService.getEmailAlias(“john@done”) .map(Queue::fromEmailAlias) .ifPresent(queue -> { // […]
J’utilise fréquemment le modèle de boucle do-while-checkNextForNull-getNext (je ne sais pas s’il existe un nom officiel) dans certains de mes projets. Mais en Java8, l’utilisation de Optional est considérée comme un code plus propre que la recherche de références nulles dans le code client. Mais lorsque vous utilisez Optional dans ce modèle de boucle, le […]
Quelqu’un peut-il expliquer comment Optional nous aide à éviter NullPointerException ? Optional op = someFunc() if(op.isPresent()) { op.get(); } Ssortingng possibleNull = op.get(); Ce code n’est-il pas sujet à NullPointerException également? Si oui, pourquoi ce code est-il préféré à Ssortingng op = someFunc() if(op != null) { op.get(); } Ssortingng possibleNull = op; Quels sont […]