# Interface Deprecable

All Known Implementing Classes:
  `AbstractCoordinateOperation, AbstractCRS, AbstractCS, AbstractDatum, AbstractIdentifiedObject, AbstractIdentifiedType, AbstractOperation, AbstractParameterDescriptor, AbstractReferenceSystem, DefaultAffineCS, DefaultAssociationRole, DefaultAttributeType, DefaultCartesianCS, DefaultCompoundCRS, DefaultCompoundCS, DefaultConversion, DefaultCoordinateSystemAxis, DefaultCylindricalCS, DefaultDatumEnsemble, DefaultDerivedCRS, DefaultEllipsoid, DefaultEllipsoidalCS, DefaultEngineeringCRS, DefaultEngineeringDatum, DefaultFeatureType, DefaultGeocentricCRS, DefaultGeodeticDatum, DefaultGeodeticDatum​.Dynamic, DefaultGeographicCRS, DefaultLinearCS, DefaultOperationMethod, DefaultParameterDescriptor, DefaultParameterDescriptorGroup, DefaultParametricCRS, DefaultParametricCS, DefaultParametricDatum, DefaultPassThroughOperation, DefaultPolarCS, DefaultPrimeMeridian, DefaultProjectedCRS, DefaultSphericalCS, DefaultTemporalCRS, DefaultTemporalDatum, DefaultTimeCS, DefaultTransformation, DefaultVerticalCRS, DefaultVerticalCS, DefaultVerticalDatum, DefaultVerticalDatum​.Dynamic, GeohashReferenceSystem, MilitaryGridReferenceSystem, ReferencingByIdentifiers`

public interface Deprecable
Interface of classes for which deprecated instances may exist. Despite the name, the entities deprecated by this interface are unrelated to the entities deprecated by the Java `Deprecated` annotation. This interface is for identifying deprecated data rather than language constructs.

## Examples

When an error is discovered in the definition of a Coordinate Reference System (CRS) in the EPSG database, the EPSG maintainers do not change the data. Instead, they deprecate the erroneous definition and create a new one with a new EPSG code. The `isDeprecated()` method in this interface allows users to identify CRS instances created from such deprecated database records, for example in order to log a warning when data are projected to a deprecated CRS.

Some examples of deprecated instances are:

- An `AbstractIdentifiedObject` (typically a CRS) which has been built from a deprecated EPSG code.
- A `NamedIdentifier` containing the legacy name of an object which has been renamed.

Since:
  0.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default InternationalString`
  `getRemarks()`
  If this instance is deprecated, the reason or the alternative to use.
  `boolean`
  `isDeprecated()`
  Returns `true` if this instance is deprecated.

- ## Method Details

  - ### isDeprecated

    boolean isDeprecated()
    Returns `true` if this instance is deprecated. In such case, the remarks may contain information about the new object to use.
    Returns:
      `true` if this instance is deprecated.

  - ### getRemarks

    default InternationalString getRemarks()
    If this instance is deprecated, the reason or the alternative to use. Otherwise, an optional free text.
    Example: "superseded by code XYZ".
    Returns:
      comments about this instance, or `null` if none. Shall be the reason for deprecation or the alternative to use if this instance is deprecated.