Package org.apache.sling.api.adapter

# Interface Adaptable

All Known Subinterfaces:
  `Resource`, `ResourceResolver`, `SlingHttpServletRequest`, `SlingHttpServletResponse`, `SlingHttpServletResponseResult`, `SlingJakartaHttpServletRequest`, `SlingJakartaHttpServletResponse`, `SlingJakartaHttpServletResponseResult`

All Known Implementing Classes:
  `AbstractResource`, `JakartaToJavaxRequestWrapper`, `JakartaToJavaxResponseWrapper`, `JavaxToJakartaRequestWrapper`, `JavaxToJakartaResponseWrapper`, `NonExistingResource`, `ResourceResolverWrapper`, `ResourceWrapper`, `SlingAdaptable`, `SlingHttpServletRequestWrapper`, `SlingHttpServletResponseWrapper`, `SlingJakartaHttpServletRequestWrapper`, `SlingJakartaHttpServletResponseWrapper`, `SyntheticResource`

@ConsumerType public interface Adaptable
The `Adaptable` interface identifies objects which can be adapted to other types or representations of the same object. For example a JCR Node based `Resource` can adapt to the underlying JCR Node or a file based resource could adapt to the underlying `java.io.File`.

## Method Summary

Modifier and Type
Method
Description
`<AdapterType>
AdapterType`
`adaptTo(@NotNull Class<AdapterType> type)`
Adapts the adaptable to another type.

## Method Details

### adaptTo

@Nullable <AdapterType> AdapterType adaptTo(@NotNull @NotNull Class<AdapterType> type)
Adapts the adaptable to another type.

Please note that it is explicitly left as an implementation detail whether each call to this method with the same `type` yields the same object or a new object on each call.

Implementations of this method should document their adapted types as well as their behaviour with respect to returning newly created or same instances on each call.

Type Parameters:
  `AdapterType` - The generic type to which this object is adapted to
Parameters:
  `type` - The Class object of the target type, such as `javax.jcr.Node.class` or `java.io.File.class`
Returns:
  The adapter target or `null` if the object cannot adapt to the requested type