
net.digitalid.utility.functional.failable.FailableProducer Maven / Gradle / Ivy
The newest version!
package net.digitalid.utility.functional.failable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.digitalid.utility.annotations.generics.Specifiable;
import net.digitalid.utility.annotations.generics.Unspecifiable;
import net.digitalid.utility.annotations.method.Impure;
import net.digitalid.utility.annotations.method.Pure;
import net.digitalid.utility.annotations.ownership.Capturable;
import net.digitalid.utility.annotations.ownership.Captured;
import net.digitalid.utility.functional.interfaces.Consumer;
import net.digitalid.utility.functional.interfaces.Producer;
import net.digitalid.utility.validation.annotations.type.Functional;
import net.digitalid.utility.validation.annotations.type.Mutable;
/**
* This functional interface models a failable method that produces objects of type {@code OUTPUT} without requiring a parameter.
*/
@Mutable
@Functional
public interface FailableProducer<@Specifiable OUTPUT, @Unspecifiable EXCEPTION extends Exception> {
/* -------------------------------------------------- Production -------------------------------------------------- */
/**
* Produces a result.
*/
@Impure
public @Capturable OUTPUT produce() throws EXCEPTION;
/* -------------------------------------------------- Suppression -------------------------------------------------- */
/**
* Returns a producer that catches the exceptions of this producer, passes them to the given exception handler and returns the given default output instead.
*/
@Pure
public default @Nonnull Producer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy