All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.conqat.lib.commons.function.SupplierWithException Maven / Gradle / Ivy

There is a newer version: 2024.7.2
Show newest version
/*
 * Copyright (c) CQSE GmbH
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.conqat.lib.commons.function;

import java.util.function.Supplier;

/**
 * This interface is the same as {@link Supplier}, except it allows throwing a checked exception.
 */
@FunctionalInterface
public interface SupplierWithException {

	/**
	 * Gets a result.
	 *
	 * @return a result
	 */
	T get() throws E;

	/**
	 * Returns a SupplierWithException which caches the instance retrieved during the first call to
	 * {@code get()} and returns that value on subsequent calls to {@code get()}.
	 * 

* The returned supplier is thread-safe. The delegate's {@code get()} method will be invoked at most * once unless the underlying {@code get()} throws an exception. *

* When the underlying delegate throws an exception, then this memoizing supplier will keep * delegating calls until it returns valid data. *

* If {@code delegate} is an instance created by an earlier call to {@code memoize}, it is returned * directly. * * @see Memoization */ static SupplierWithException memoize(SupplierWithException delegate) { if (delegate instanceof MemoizingSupplierWithException) { return delegate; } return new MemoizingSupplierWithException<>(delegate); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy