Maison  >  Article  >  Java  >  Introduction à l'utilisation de la nouvelle fonctionnalité de Java8 Facultatif (avec code)

Introduction à l'utilisation de la nouvelle fonctionnalité de Java8 Facultatif (avec code)

不言
不言avant
2019-04-13 11:55:264811parcourir

Cet article vous présente une introduction à l'utilisation de la nouvelle fonctionnalité de Java8 Facultatif (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. . a aidé.

La classe Optionnelle (java.util.Optional) est une classe conteneur qui représente l'existence ou la non-existence d'une valeur. À l'origine, null était utilisé pour représenter l'absence d'une valeur. mieux exprimer ce concept. Et peut éviter l’exception du pointeur nul.

1. of

crée un facultatif pour une valeur non nulle. Si la valeur est nulle, une NullPointerException sera levée

Optional<Integer> optional = Optional.of(13);
System.out.println(optional)

ofNullable

Créez un facultatif pour la valeur spécifiée. Si la valeur spécifiée est nulle, un facultatif vide est renvoyé.

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
3. isPresent

renvoie vrai si la valeur existe, sinon renvoie faux.

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
System.out.println(optional2.isPresent());

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
4. get

Si Facultatif a une valeur, renvoyez-la, sinon lancez NoSuchElementException.

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
System.out.println(optional2.get());
5. ifPresent

Si l'instance facultative a une valeur, appelez le consommateur pour celle-ci, sinon aucun traitement ne sera effectué. L'Ermite a porté un jugement nul parmi eux.

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);

    optional1.ifPresent(str->System.out.println(str.length()));
    optional2.ifPresent(str-> System.out.println(str.length()));
}
6. orElse

S'il y a une valeur, renvoyez-la, sinon renvoyez l'autre valeur spécifiée.

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);
    System.out.println(optional1.orElse("默认字符串"));
    System.out.println(optional2.orElse("默认字符串"));
}
7. orElseGet

orElseGet est similaire à la méthode orElse, la différence réside dans la valeur par défaut obtenue. La méthode orElse prend une valeur entrante comme valeur par défaut. La méthode orElseGet peut accepter l'implémentation de l'interface Fournisseur pour générer la valeur par défaut

public static void main(String[] args) {
    Integer i = 20;
    Optional<Integer> op = Optional.ofNullable(i);
    System.out.println(op.orElseGet(()->0));
    System.out.println(Optional.ofNullable(null).orElseGet(()->0));
}
8 orElseThrow

S'il existe un. valeur, renvoyez-la, sinon une exception créée par l'interface du fournisseur est levée.

public static void main(String[] args) {
    // 自己指定异常
    System.out.println((Optional.ofNullable("a").orElseThrow(()->new IndexOutOfBoundsException())));
    System.out.println((Optional.ofNullable(null).orElseThrow(()->new IndexOutOfBoundsException())));
}
9. map

map gère la situation où il y a une valeur, exécutez la fonction dans le paramètre map pour obtenir la valeur de retour, sinon elle renvoie. un facultatif vide.

public static void main(String[] args) {
   List<String> list = new ArrayList<String>(){
       {
            add("aaa");
            add("bbb");
            add(null);
       }
   };

   list.stream().forEach(temp ->{
        Optional<String> opt = Optional.ofNullable(temp);
        System.out.println(opt.map(n -> {
           return n.toUpperCase();
        }).orElse("Nothing"));
   });

   // 简写为如下形式
    list.stream().forEach(temp->{
        System.out.println(Optional.ofNullable(temp).map(n->n.toUpperCase()).orElse("Nothing"));
    });
}
10. flatMap

S'il y a une valeur, exécutez la fonction de mappage pour renvoyer une valeur de retour de type Facultatif, sinon renvoyez une valeur Facultative vide. flatMap est similaire à la méthode map(Funtion), la différence est que la valeur de retour du mappeur dans flatMap doit être facultative. À la fin de l'appel, flatMap n'encapsulera pas le résultat avec Facultatif. Vous pouvez utiliser le contenu

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aaa");
    Optional<String> opt2 = Optional.ofNullable(null);
    System.out.println(opt1.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));

    System.out.println( opt2.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));
}
11, filter

S'il y a une valeur et que la condition d'assertion est remplie, un facultatif contenant la valeur est renvoyé, sinon un facultatif vide est renvoyé.

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aabbbbaa");
    Optional<String> opt2 = Optional.ofNullable(null);

    System.out.println(opt1.filter(value->value.length()>6));
    System.out.println(opt2.filter(value->value.length()>6));
}
Bon, c'est tout pour l'introduction d'Optional, une nouvelle fonctionnalité de Java 8.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer