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
- iftype
isnull
- 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.
-