package proton.inject.binding; import java.lang.annotation.Annotation; import javax.inject.Provider; public class Binding<T> { private final Class<T> mBindClass; private Class<?> mToClass; private Class<? extends Provider<T>> mProviderClass; private Provider<T> mProvider; private Class<? extends Annotation> mScope; public Binding(Class<T> key) { mBindClass = key; mToClass = key; } public Class<T> getBindClass() { return mBindClass; } public Class<?> getToClass() { return mProviderClass != null ? mProviderClass : mToClass; } public void setToClass(Class<?> toClass) { mToClass = toClass; } public void setProviderClass(Class<? extends Provider<T>> providerClass) { mProviderClass = providerClass; } public Class<? extends Provider<T>> getProviderClass() { return mProviderClass; } public void setProvider(Provider<T> provider) { mProvider = provider; } public Provider<T> getProvider() { return (Provider<T>) mProvider; } public void setScope(Class<? extends Annotation> scope) { mScope = scope; } public Class<? extends Annotation> getScope() { return mScope; } }