OptionalBuilder est une bibliothèque Java utilitaire qui simplifie la manipulation et la combinaison de deux valeurs optionnelles. Elle permet de créer des opérations synchrones et asynchrones en utilisant des interfaces fonctionnelles, tout en garantissant un code clair et robuste.
- Combinaison des valeurs optionnelles : Combine deux valeurs optionnelles à l'aide de fonctions simples ou complexes.
- Support asynchrone : Gère des
CompletableFuturepour des combinaisons non bloquantes. - Wrapper de résultats : Fournit une classe
Resultpour encapsuler les valeurs combinées. - API fluide : Simplifie la manipulation grâce à des méthodes statiques et des interfaces fonctionnelles.
- Java : Version 21 ou supérieure
- Lombok : Nécessaire pour les annotations
@AllArgsConstructor
Ajoutez la bibliothèque à votre projet en la construisant localement ou en l'ajoutant à votre gestionnaire de dépendances (si publiée sur un repository public).
<dependency>
<groupId>fr.grelu</groupId>
<artifactId>optional-builder</artifactId>
<version>1.0.0</version>
</dependency>implementation 'fr.grelu:optional-builder:1.0.0'import fr.grelu.common.OptionalBuilder;
import java.util.Optional;
public class Example {
public static void main(String[] args) {
Optional<String> first = Optional.of("Hello");
Optional<Integer> second = Optional.of(42);
Optional<String> result = OptionalBuilder.of(first, second)
.merge((str, num) -> str + " world, the answer is " + num);
result.ifPresent(System.out::println);
// Output : Hello world, the answer is 42
}
}import fr.grelu.common.OptionalBuilder;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<Optional<String>> first = CompletableFuture.supplyAsync(() -> Optional.of("Async"));
CompletableFuture<Optional<Integer>> second = CompletableFuture.supplyAsync(() -> Optional.of(2025));
OptionalBuilder<String, Integer> builder = OptionalBuilder.ofAsync(first, second);
Optional<OptionalBuilder.Result<String, Integer>> result = builder.merge();
result.ifPresent(r -> System.out.println(r.first() + " year is " + r.second()));
// Output : Async year is 2025
}
}Crée un OptionalBuilder à partir de deux valeurs optionnelles.
OptionalBuilder.ofAsync(CompletableFuture<Optional<E>> first, CompletableFuture<Optional<F>> second)
Crée un OptionalBuilder en combinant deux futures asynchrones.
Combine les deux valeurs avec une fonction simple.
Combine les deux valeurs avec une fonction complexe.
Renvoie un Optional contenant un Result si les deux valeurs sont présentes.
Une classe wrapper contenant les deux valeurs combinées.
Ce projet est distribué sous la licence MIT. Consultez le fichier LICENSE pour plus d'informations.
Dorian (2025)