package com.github.czyzby.autumn.provider;
import com.github.czyzby.kiwi.util.gdx.asset.lazy.provider.ObjectProvider;
/** Base interface for dependency providers. If an {@link com.github.czyzby.autumn.annotation.Provider}-annotated class
* implements this interface, it will become a non-reflection-based provider, which might be necessary for most commonly
* called providers.
*
* @author MJ
*
* @param <Type> base type of provided objects. */
public interface DependencyProvider<Type> extends ObjectProvider<Type> {
/** @return base type of provided objects. */
Class<Type> getDependencyType();
/** @return an instance of provided object type. Depending on provider type, this might return the same instance or
* a new instance on each call. */
@Override
Type provide();
}