# Package org.apache.sis.util

Simple data objects and miscellaneous utilities. This package provides general purpose static methods working on primitive or basic Java types (`Characters`, `CharSequences`, `StringBuilders`, `Locales`, `Numbers`, `Classes`), arrays (`ArraysExt`) or other standard Java types (`Exceptions`). It defines also general purpose annotations, enumerations and exceptions.

Some other noticeable services are:

- `ObjectConverters`, together with the `ObjectConverter` interface, for converting various kinds of objects.
- `Utilities`, together with the `LenientComparable` interface, for comparing objects in various ways.

Since:
  0.3

Defined in the `sis-utility` module

- Interface Summary
  Interface | Description
  --- | ---
  Deprecable | Interface of classes for which deprecated instances may exist.
  Disposable | A resource that can be disposed when waiting for the garbage collector would be overly conservative.
  Emptiable | Interface of classes for which empty instances may exist.
  LenientComparable | Interfaces of classes for which instances can be compared for equality using different levels of strictness.
  Localized | Interface of classes for which each instance is configured for a particular locale.
  LocalizedException | An exception which can produce an error message in the client locale.
  ObjectConverter<S,​T> | A function which converts instances of source type to instances of target type.

- Class Summary
  Class | Description
  --- | ---
  ArgumentChecks | Static methods for performing argument checks.
  ArraysExt | Static methods for simple operations on arrays and array elements.
  Characters | Static methods working on `char` values, and some character constants.
  Characters.Filter | Subsets of Unicode characters identified by their general category.
  CharSequences | Static methods working with `CharSequence` instances.
  Classes | Static methods working on `Class` objects.
  Exceptions | Static methods working with `Exception` instances.
  Locales | Static methods working on `Locale` instances.
  Numbers | Static methods working with `Number` objects, and a few primitive types by extension.
  ObjectConverters | Static methods for creating `ObjectConverter` instances or collection views based on converters.
  Static | Parent of SIS classes that contain only static utility methods, for documentation purpose.
  StringBuilders | Static methods working on `StringBuilder` instances.
  Utilities | Static methods for object comparisons in different ways (deeply, approximately, etc).
  Version | Holds a version number as a sequence of strings separated by either a dot or a dash.

- Enum Summary
  Enum | Description
  --- | ---
  ComparisonMode | Specifies the level of strictness when comparing two `LenientComparable` objects for equality.

- Exception Summary
  Exception | Description
  --- | ---
  CorruptedObjectException | May be thrown on attempt to use an object which has been corrupted by a previous operation.
  NullArgumentException | Thrown when a null argument has been given to a method that doesn't accept them.
  UnconvertibleObjectException | Thrown when an object can not be converted from the source type to the target type.
  UnknownNameException | Thrown when an operation can not complete because a given name is unrecognized.
  UnsupportedImplementationException | Thrown when an operation can not use arbitrary implementation of an interface, and a given instance does not met the requirement.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  Configuration | Annotates methods having a system-wide impact on the configuration of the Apache SIS library.
  Debug | Annotates classes or methods that are provided mostly for debugging purpose.
  Workaround | Annotates code containing workarounds for bugs or limitations in an external library.