Interface ExtensibleObject<O extends ExtensibleObject<O,E>,E extends ObjectExtension<O,E>>
- Type Parameters:
O- Type of extensible objectE- Extension marker interface
- All Known Subinterfaces:
NormalizedNodeStreamWriter,ReusableStreamReceiver
- All Known Implementing Classes:
FormattingNormalizedNodeStreamWriter,ForwardingNormalizedNodeStreamWriter,ImmutableMetadataNormalizedNodeStreamWriter,ImmutableMountPointNormalizedNodeStreamWriter,ImmutableNormalizedNodeStreamWriter,JSONNormalizedNodeStreamWriter,LoggingNormalizedNodeStreamWriter,QNameTransformingStreamWriter,ReusableImmutableNormalizedNodeStreamWriter,XMLStreamNormalizedNodeStreamWriter
public interface ExtensibleObject<O extends ExtensibleObject<O,E>,E extends ObjectExtension<O,E>>
Interface specifying access to extensions attached to a particular object. This functionality is loosely based on
Extensible Object
pattern.
-
Method Summary
Modifier and TypeMethodDescriptiondefault <T extends E>
@Nullable TReturn an extension interface, if currently available.findExtension(Class<T> type) default @NonNull Collection<? extends E> Return currently-supported extensions.
-
Method Details
-
extension
Return an extension interface, if currently available.- Type Parameters:
T- Extension type- Parameters:
type- Extension type class- Returns:
- An extension instance, or
null - Throws:
NullPointerException- iftypeisnull- Implementation Requirements:
- Default implementation defers to linear search of
supportedExtensions().
-
findExtension
-
supportedExtensions
Return currently-supported extensions. Note that the returned collection may change if this object is mutable.- Returns:
- Supported extensions
- Implementation Requirements:
- Default implementations returns an empty List.
-