Classe Optional de Java 8

Java 8 新特性Nouveautés de Java 8


La classe Optional est un objet conteneur qui peut être null. Si la valeur existe, la méthode isPresent() renvoie true, et l'appel de la méthode get() renvoie l'objet.

Optional est un conteneur : il peut contenir une valeur de type T, ou simplement null. Optional fournit de nombreuses méthodes utiles, donc nous n'avons pas à effectuer explicitement des vérifications de valeur null.

L'introduction de la classe Optional résout efficacement l'exception de pointeur null.

Déclaration de classe

Ce qui suit est unejava.util.Optional<T>déclaration de classe :

public final class Optional<T> extends Object

Méthodes de classe

Numéro Metode & Deskripsi
1 static <T> Optional<T> empty()

Renvoie une instance Optional vide.

2 boolean equals(Object obj)

Détermine si un autre objet est égal à l'Optional.

3 Optional<T> filter(Predicate<? super <T> predicate)

Si la valeur existe et correspond au prédicat donné, renvoie un Optional décrivant cette valeur ; sinon, renvoie un Optional vide.

4 <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

Si une valeur existe, renvoie la valeur en fonction de la méthode de mappage contenue dans l'Optional ; sinon, renvoie un Optional vide.

5 T get()

Si la valeur est contenue dans cet Optional, renvoie la valeur ; sinon, lève une exception : NoSuchElementException

6 int hashCode()

Renvoie le code de hachage de la valeur présente, ou 0 si la valeur n'est pas présente.

7 void ifPresent(Consumer<? super T> consumer)

Si une valeur est présente, invoque le consumer avec la valeur ; sinon, ne fait rien.

8 boolean isPresent()

La méthode renvoie true si la valeur est présente, sinon renvoie false.

9 <U>Optional<U> map(Function<? super T,? extends U> mapper)

Si une valeur est présente, applique la fonction de mappage à celle-ci et récupère la valeur de retour. Si la valeur de retour n'est pas null, crée un Optional contenant la valeur de retour mappée comme valeur de retour de la méthode map ; sinon, renvoie un Optional vide.

10 static <T> Optional<T> of(T value)

Renvoie un Optional avec la valeur non-null spécifiée.

11 static <T> Optional<T> ofNullable(T value)

Si la valeur n'est pas nulle, renvoie un Optional décrivant la valeur spécifiée ; sinon, renvoie un Optional vide.

12 T orElse(T other)

Si la valeur est présente, renvoie la valeur ; sinon, renvoie other.

13 T orElseGet(Supplier<? extends T> other)

Si la valeur est présente, renvoie la valeur ; sinon, invoque other et renvoie le résultat de l'appel à other.

14 <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

Si la valeur est présente, renvoie la valeur contenue ; sinon, lève une exception fournie par le Supplier.

15 String toString()

Renvoie une chaîne non nulle de l'Optional, utilisée pour le débogage.

Remarque :Ces méthodes sont héritées dejava.lang.Object, la classe.


Instance de Optional

Nous pouvons mieux comprendre l'utilisation de la classe Optional à travers les exemples suivants :

Fichier Java8Tester.java

import java.util.Optional; public class Java8Tester { public static void main(String args[]){ Java8Tester java8Tester = new Java8Tester(); Integer value1 = null; Integer value2 = new Integer(10); //Optional.ofNullable - Permet de passer des paramètres null Optional<Integer> a = Optional.ofNullable(value1); //Optional.of - Lève NullPointerException si le paramètre passé est null Optional<Integer> b = Optional.of(value2); System.out.println(java8Tester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> b){ //Optional.isPresent - Détermine si la valeur existe System.out.println("La valeur du premier paramètre est présente :" + a.isPresent()); System.out.println("La valeur du deuxième paramètre est présente :" + b.isPresent()); //Optional.orElse - Si la valeur est présente, la renvoie ; sinon, renvoie la valeur par défaut. Integer value1 = a.orElse(new Integer(0)); //Optional.get - Obtient la valeur ; la valeur doit être présente. Integer value2 = b.get(); return value1 + value2; } }

L'exécution du script ci-dessus produit la sortie suivante :

$ javac Java8Tester.java 
$ java Java8Tester
第一个参数值存在: false
第二个参数值存在: true
10

Java 8 新特性Nouveautés de Java 8

Autres extensions