# Package oracle.dbtools.plugin.api.types

Provides a layer atop `java.lang.reflect` package to aid dependency resolution and injection.

Since:
  19.3.0

- Interface Summary
  Interface | Description
  --- | ---
  TypeLocator | Service for selecting `TypeReflection` instances
  TypeProvider<T> | Provides an instance of the specified type
  TypeQualifier<T> | Qualifies the specific type of a service to be discovered via `InstanceLocator`.
  TypeQualifier.Builder<T> | Build `TypeQualifier` instances

- Class Summary
  Class | Description
  --- | ---
  AnnotationSet | Immutable set of `Annotation` instances
  ProvidedClassifier | Determines what `Class` types an `AnnotatedElement` provides.
  TypeDependencies<T> | Captures the dependencies of a `Class`
  TypeDependency | Encapsulates a single dependency of a type.
  TypeInstantiator<T> | `TypeInstantiator` implementations are responsible for instantiating instances of type TypeInstantiator.
  TypeReflection<T> | Provides higher level abstraction about the type metadata of a `Class`, providing information about it's dependencies and what services it provides
  TypeReflections | Represents a set of `Class` instances that may be instantiated and injected using `InstanceLocator`
  TypeReflections.Builder |

- Enum Summary
  Enum | Description
  --- | ---
  Primitive | Enumerates the Java primitive types
  PrimitiveWrapper | Enumeration of the wrapper type for each Java `Primitive` type
  TypeDependency.Kind | Enumerates how a type will be injected at a particular injetion site
  TypeQualifier.MatchingMode | Determines how the `TypeQualifier` matches types

- Exception Summary
  Exception | Description
  --- | ---
  TypeDependencyNotAvailableException | Indicates an instance of a type which some other type depends on (via it's `Inject` annotated constructor is not available in the current scope