Code

import java.util.Optional;import java.util.function.*;public class OptionalUtils {        // Safe value extraction    public static <T> T getValue(Optional<T> optional, T defaultValue) {        return optional.orElse(defaultValue);    }        // Safe value extraction with supplier    public static <T> T getValue(Optional<T> optional, Supplier<T> supplier) {        return optional.orElseGet(supplier);    }        // Throw exception if empty    public static <T> T getValueOrThrow(Optional<T> optional, String message) {        return optional.orElseThrow(() -> new IllegalArgumentException(message));    }        // Map operation    public static <T, R> Optional<R> map(Optional<T> optional, Function<T, R> mapper) {        return optional.map(mapper);    }        // Filter operation    public static <T> Optional<T> filter(Optional<T> optional, Predicate<T> predicate) {        return optional.filter(predicate);    }        // FlatMap operation    public static <T, R> Optional<R> flatMap(Optional<T> optional, Function<T, Optional<R>> mapper) {        return optional.flatMap(mapper);    }        // Conditional execution    public static <T> void ifPresent(Optional<T> optional, Consumer<T> action) {        optional.ifPresent(action);    }        // Conditional execution with else    public static <T> void ifPresentOrElse(Optional<T> optional, Consumer<T> action, Runnable emptyAction) {        optional.ifPresentOrElse(action, emptyAction);    }}
// Creating OptionalsOptional<String> empty = Optional.empty();Optional<String> present = Optional.of("Hello");Optional<String> nullable = Optional.ofNullable(getString()); // may be null// Checking presenceif (present.isPresent()) {    String value = present.get();}// Safe value extractionString value1 = present.orElse("Default");String value2 = present.orElseGet(() -> "Default");String value3 = present.orElseThrow(() -> new RuntimeException("Not found"));// Map transformationOptional<Integer> length = present.map(String::length);Optional<String> upper = present.map(String::toUpperCase);// FilterOptional<String> filtered = present.filter(s -> s.length() > 5);// FlatMap (avoid Optional<Optional<T>>)Optional<String> flatMapped = present.flatMap(s -> Optional.of(s.toUpperCase()));// Conditional executionpresent.ifPresent(System.out::println);present.ifPresentOrElse(    System.out::println,    () -> System.out.println("Empty"));// Chaining operationsOptional<String> result = Optional.ofNullable(getString())    .filter(s -> !s.isEmpty())    .map(String::toUpperCase)    .orElse("DEFAULT");

Comments

No comments yet. Be the first!