public interface ProviderWithExtensionVisitor<T> extends Provider<T>
When an extension binds a provider instance, the provider can implement this interface to
allow users using the Binding.acceptTargetVisitor(BindingTargetVisitor) method to visit a
custom visitor designed for that extension. A typical implementation within the extension would
look like
<V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) {
if(visitor instanceof MyCustomExtensionVisitor) {
return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding);
} else {
return visitor.visit(binding);
}
}
'MyCustomExtensionVisitor' in the example above would be an interface the extension provides that
users can implement in order to be notified of custom extension information. These visitor
interfaces must extend from BindingTargetVisitor.| Modifier and Type | Method and Description |
|---|---|
<B,V> V |
acceptExtensionVisitor(BindingTargetVisitor<B,V> visitor,
ProviderInstanceBinding<? extends B> binding)
Instructs the extension determine if the visitor is an instance of a custom extension visitor,
and if so, visit it using that method.
|
<B,V> V acceptExtensionVisitor(BindingTargetVisitor<B,V> visitor, ProviderInstanceBinding<? extends B> binding)
Due to issues with generics, the type parameters of this method do not relate to the type of the provider. In practice, the 'B' type will always be a supertype of 'T'.