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

aQute.bnd.osgi.resource.DeferredValue Maven / Gradle / Ivy

The newest version!
package aQute.bnd.osgi.resource;

import static java.util.Objects.requireNonNull;

import java.util.function.Supplier;

import aQute.bnd.memoize.Memoize;

class DeferredValue implements Supplier {
	private final Class				type;
	private final Supplier	supplier;
	private final int					hashCode;

	DeferredValue(Class type, Supplier supplier, int hashCode) {
		this.type = requireNonNull(type);
		this.supplier = Memoize.supplier(supplier);
		this.hashCode = hashCode;
	}

	@Override
	public T get() {
		return supplier.get();
	}

	Class type() {
		return type;
	}

	@Override
	public int hashCode() {
		return hashCode;
	}

	@SuppressWarnings("unchecked")
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof DeferredValue) {
			obj = ((DeferredValue) obj).get();
		}
		return get().equals(obj);
	}

	@Override
	public String toString() {
		return String.valueOf(get());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy