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 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 |
acceptExtensionVisitor(BindingTargetVisitor
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'.