blob: 84f45ddf8f08a27b38ab398e5ecaf52e51892b6a [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (19) -->
<title>AbstractIdentifiedObject (Apache SIS 1.3 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.sis.referencing, class: AbstractIdentifiedObject">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.AbstractIdentifiedObject class">
<meta name="keywords" content="LOCALE_KEY">
<meta name="keywords" content="DEPRECATED_KEY">
<meta name="keywords" content="castOrCopy()">
<meta name="keywords" content="getInterface()">
<meta name="keywords" content="getName()">
<meta name="keywords" content="getAlias()">
<meta name="keywords" content="getIdentifiers()">
<meta name="keywords" content="getDescription()">
<meta name="keywords" content="getRemarks()">
<meta name="keywords" content="isDeprecated()">
<meta name="keywords" content="isHeuristicMatchForName()">
<meta name="keywords" content="equals()">
<meta name="keywords" content="hashCode()">
<meta name="keywords" content="computeHashCode()">
<meta name="keywords" content="formatTo()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/AbstractIdentifiedObject.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing</a></div>
<h1 title="Class AbstractIdentifiedObject" class="title">Class AbstractIdentifiedObject</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
<div class="inheritance">AbstractIdentifiedObject</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formattable.html" title="class or interface in java.util" class="external-link">Formattable</a></code>, <code><a href="../util/Deprecable.html" title="interface in org.apache.sis.util">Deprecable</a></code>, <code><a href="../util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code></dd>
</dl>
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="operation/AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">Abstract­Coordinate­Operation</a></code>, <code><a href="cs/AbstractCS.html" title="class in org.apache.sis.referencing.cs">Abstract­CS</a></code>, <code><a href="datum/AbstractDatum.html" title="class in org.apache.sis.referencing.datum">Abstract­Datum</a></code>, <code><a href="../parameter/AbstractParameterDescriptor.html" title="class in org.apache.sis.parameter">Abstract­Parameter­Descriptor</a></code>, <code><a href="AbstractReferenceSystem.html" title="class in org.apache.sis.referencing">Abstract­Reference­System</a></code>, <code><a href="cs/DefaultCoordinateSystemAxis.html" title="class in org.apache.sis.referencing.cs">Default­Coordinate­System­Axis</a></code>, <code><a href="datum/DefaultEllipsoid.html" title="class in org.apache.sis.referencing.datum">Default­Ellipsoid</a></code>, <code><a href="operation/DefaultOperationMethod.html" title="class in org.apache.sis.referencing.operation">Default­Operation­Method</a></code>, <code><a href="datum/DefaultPrimeMeridian.html" title="class in org.apache.sis.referencing.datum">Default­Prime­Meridian</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AbstractIdentifiedObject</span>
<span class="extends-implements">extends <a href="../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
implements <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formattable.html" title="class or interface in java.util" class="external-link">Formattable</a>, <a href="../util/LenientComparable.html" title="interface in org.apache.sis.util">LenientComparable</a>, <a href="../util/Deprecable.html" title="interface in org.apache.sis.util">Deprecable</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
<div class="block">Base class for objects identified by a name or a code. Those objects are typically
<a href="datum/DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum">geodetic datum</a> (e.g. <cite>"World Geodetic System 1984"</cite>),
<a href="crs/AbstractCRS.html" title="class in org.apache.sis.referencing.crs">Coordinate Reference System</a> (e.g. <cite>"WGS 84 / World Mercator"</cite>) or
<a href="operation/DefaultConversion.html" title="class in org.apache.sis.referencing.operation">map projection</a> (e.g. <cite>"Mercator (variant A)"</cite>).
Those names, or a code (e.g. <code>"EPSG:3395"</code>), can be used for fetching an object from a database.
However, it is not sufficient to know the object name. We also need to know who define that name
(the <a href="ImmutableIdentifier.html#getAuthority()">authority</a>) since the same objects are often named differently
depending on the providers, or conversely the same name is used for different objects depending on the provider.
<p>The main information stored in an <code>Identified­Object</code> are:</p>
<ul>
<li>a primary <a href="#getName()">name</a>, considered by the object creator as the preferred name,</li>
<li>an arbitrary number of <a href="#getAlias()">aliases</a>, for example a list of names used by other providers,</li>
<li>an arbitrary number of <a href="#getIdentifiers()">identifiers</a>, typically primary keys in the provider database,</li>
<li>optional <a href="#getRemarks()">remarks</a>.</li>
</ul>
<h2>Instantiation</h2>
This class is conceptually <cite>abstract</cite>, even if it is technically possible to instantiate it.
Applications should instead instantiate the most specific subclass having a name starting by <code>Default</code>.
However, exceptions to this rule may occur when it is not possible to identify the exact type.
<div class="note"><b>Example:</b>
It is sometimes not possible to infer the exact coordinate system type from
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/doc-files/WKT.html">version 1
of <cite>Well Known Text format</cite></a>, for example when parsing a <code>LOCAL_CS</code> element.
In such exceptional situation, a plain <code>Abstract­CS</code> object may be instantiated.</div>
<code>Identified­Object</code> instances are created in two main ways:
<ul>
<li>Using an <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ObjectFactory.html" title="class or interface in org.opengis.referencing" class="external-link"><code>Object­Factory</code></a>, in which case all properties can be explicitly specified.</li>
<li>Using an <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/AuthorityFactory.html" title="class or interface in org.opengis.referencing" class="external-link"><code>Authority­Factory</code></a>, in which case only a code (typically a primary key) is specified.
The <a href="ImmutableIdentifier.html#getAuthority()">authority</a>
and <a href="ImmutableIdentifier.html#getCode()">authority code</a> values are set to the authority name
of the factory object, and the authority code supplied by the client, respectively.
All other information are fetched from the database.</li>
</ul>
<h2>Immutability and thread safety</h2>
This base class is immutable if the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/citation/Citation.html" title="class or interface in org.opengis.metadata.citation" class="external-link"><code>Citation</code></a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link"><code>Reference­Identifier</code></a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/GenericName.html" title="class or interface in org.opengis.util" class="external-link"><code>Generic­Name</code></a> and
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link"><code>International­String</code></a> instances given to the constructor are also immutable. Most SIS subclasses and
related classes are immutable under similar conditions. This means that unless otherwise noted in the javadoc,
<code>Identified­Object</code> instances created using only SIS factories and static constants can be shared by many
objects and passed between threads without synchronization.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.4</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../serialized-form.html#org.apache.sis.referencing.AbstractIdentifiedObject">Serialized Form</a></li>
</ul>
</dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#DEPRECATED_KEY" class="member-name-link">DEPRECATED_KEY</a></code></div>
<div class="col-last even-row-color">
<div class="block">Optional key which can be given to the <a href="#%3Cinit%3E(java.util.Map)">constructor</a>
for specifying the object is deprecated.</div>
</div>
<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#LOCALE_KEY" class="member-name-link">LOCALE_KEY</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Optional key which can be given to the <a href="#%3Cinit%3E(java.util.Map)">constructor</a> for specifying
the locale to use for producing error messages.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-IdentifiedObject">Fields inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#ALIAS_KEY" title="class or interface in org.opengis.referencing" class="external-link">ALIAS_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#IDENTIFIERS_KEY" title="class or interface in org.opengis.referencing" class="external-link">IDENTIFIERS_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#NAME_KEY" title="class or interface in org.opengis.referencing" class="external-link">NAME_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#REMARKS_KEY" title="class or interface in org.opengis.referencing" class="external-link">REMARKS_KEY</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.Map)" class="member-name-link">Abstract­Identified­Object</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an object from the given properties.</div>
</div>
<div class="col-first odd-row-color"><code>protected </code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.opengis.referencing.IdentifiedObject)" class="member-name-link">Abstract­Identified­Object</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a>&nbsp;object)</code></div>
<div class="col-last odd-row-color">
<div class="block">Constructs a new identified object with the same values than the specified one.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="AbstractIdentifiedObject.html" title="class in org.apache.sis.referencing">Abstract­Identified­Object</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#castOrCopy(org.opengis.referencing.IdentifiedObject)" class="member-name-link">cast­Or­Copy</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a>&nbsp;object)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a SIS identified object implementation with the values of the given arbitrary implementation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#computeHashCode()" class="member-name-link">compute­Hash­Code</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Invoked by <a href="#hashCode()"><code>hash­Code()</code></a> for computing the hash code when first needed.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Compares the specified object with this object for equality.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
<a href="../util/ComparisonMode.html" title="enum class in org.apache.sis.util">Comparison­Mode</a>&nbsp;mode)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Compares this object with the given object for equality.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#formatTo(java.util.Formatter,int,int,int)" class="member-name-link">format­To</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formatter.html" title="class or interface in java.util" class="external-link">Formatter</a>&nbsp;formatter,
int&nbsp;flags,
int&nbsp;width,
int&nbsp;precision)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Formats the name or identifier of this object using the provider formatter.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#formatTo(org.apache.sis.io.wkt.Formatter)" class="member-name-link">format­To</a><wbr>(<a href="../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Formats the inner part of the <cite>Well Known Text</cite> (WKT) representation for this object.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/GenericName.html" title="class or interface in org.opengis.util" class="external-link">Generic­Name</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAlias()" class="member-name-link">get­Alias</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns alternative names by which this object is identified.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link">International­String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDescription()" class="member-name-link">get­Description</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a narrative explanation of the role of this object.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link">Reference­Identifier</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIdentifiers()" class="member-name-link">get­Identifiers</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns identifiers which references elsewhere the object's defining information.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getInterface()" class="member-name-link">get­Interface</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the GeoAPI interface implemented by this class.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link">Reference­Identifier</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">get­Name</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the primary name by which this object is identified.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link">International­String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRemarks()" class="member-name-link">get­Remarks</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns comments on or information about this object, including data source information.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hash­Code</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a hash value for this identified object.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDeprecated()" class="member-name-link">is­Deprecated</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if this object is deprecated.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isHeuristicMatchForName(java.lang.String)" class="member-name-link">is­Heuristic­Match­For­Name</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if either the <a href="#getName()">primary name</a> or at least
one <a href="#getAlias()">alias</a> matches the given string according heuristic rules.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-FormattableObject">Methods inherited from class&nbsp;<a href="../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a></h3>
<code><a href="../io/wkt/FormattableObject.html#print()">print</a>, <a href="../io/wkt/FormattableObject.html#toString()">to­String</a>, <a href="../io/wkt/FormattableObject.html#toString(org.apache.sis.io.wkt.Convention)">to­String</a>, <a href="../io/wkt/FormattableObject.html#toWKT()">to­WKT</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-IdentifiedObject">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#toWKT()" title="class or interface in org.opengis.referencing" class="external-link">to­WKT</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOCALE_KEY">
<h3>LOCALE_KEY</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">LOCALE_KEY</span></div>
<div class="block">Optional key which can be given to the <a href="#%3Cinit%3E(java.util.Map)">constructor</a> for specifying
the locale to use for producing error messages. Notes:
<ul>
<li>The locale is not stored in any <code>Abstract­Identified­Object</code> property;
its value is ignored if no error occurred at construction time.</li>
<li>The locale is used on a <cite>best effort</cite> basis;
not all error messages may be localized.</li>
</ul></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.sis.referencing.AbstractIdentifiedObject.LOCALE_KEY">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="DEPRECATED_KEY">
<h3>DEPRECATED_KEY</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">DEPRECATED_KEY</span></div>
<div class="block">Optional key which can be given to the <a href="#%3Cinit%3E(java.util.Map)">constructor</a>
for specifying the object is deprecated. If deprecated, then the replacement should be specified
in the <a href="#getRemarks()">remarks</a>.
<div class="note"><b>Example:</b> "superseded by code XYZ".</div></div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.6</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.sis.referencing.AbstractIdentifiedObject.DEPRECATED_KEY">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.util.Map)">
<h3>AbstractIdentifiedObject</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AbstractIdentifiedObject</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Constructs an object from the given properties. Keys are strings from the table below.
The map given in argument shall contain an entry at least for the
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#NAME_KEY" title="class or interface in org.opengis.referencing" class="external-link">"name"</a> or
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/Identifier.html#CODE_KEY" title="class or interface in org.opengis.metadata" class="external-link">"code"</a> key.
Other properties listed in the table below are optional.
In particular, <code>"authority"</code>, <code>"code"</code>, <code>"codespace"</code> and <code>"version"</code>
are convenience properties for building a name, and are ignored if the <code>"name"</code> property
is already a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link"><code>Reference­Identifier</code></a> object instead of a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a>.
<table class="sis">
<caption>Recognized properties (non exhaustive list)</caption>
<tr>
<th>Property name</th>
<th>Value type</th>
<th>Returned by</th>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#NAME_KEY" title="class or interface in org.opengis.referencing" class="external-link">"name"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link"><code>ReferenceIdentifier</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="#getName()"><code>getName()</code></a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/Identifier.html#AUTHORITY_KEY" title="class or interface in org.opengis.metadata" class="external-link">"authority"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a> or <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/citation/Citation.html" title="class or interface in org.opengis.metadata.citation" class="external-link"><code>Citation</code></a></td>
<td><a href="ImmutableIdentifier.html#getAuthority()"><code>ImmutableIdentifier.getAuthority()</code></a> on the <a href="#getName()">name</a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/Identifier.html#CODE_KEY" title="class or interface in org.opengis.metadata" class="external-link">"code"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="ImmutableIdentifier.html#getCode()"><code>ImmutableIdentifier.getCode()</code></a> on the <a href="#getName()">name</a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html#CODESPACE_KEY" title="class or interface in org.opengis.referencing" class="external-link">"codespace"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="ImmutableIdentifier.html#getCodeSpace()"><code>ImmutableIdentifier.getCodeSpace()</code></a> on the <a href="#getName()">name</a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html#VERSION_KEY" title="class or interface in org.opengis.referencing" class="external-link">"version"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="ImmutableIdentifier.html#getVersion()"><code>ImmutableIdentifier.getVersion()</code></a> on the <a href="#getName()">name</a></td>
</tr>
<tr>
<td>"description"</td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="ImmutableIdentifier.html#getDescription()"><code>ImmutableIdentifier.getDescription()</code></a> on the <a href="#getName()">name</a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#ALIAS_KEY" title="class or interface in org.opengis.referencing" class="external-link">"alias"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/GenericName.html" title="class or interface in org.opengis.util" class="external-link"><code>GenericName</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/CharSequence.html" title="class or interface in java.lang" class="external-link"><code>Char­Sequence</code></a> (optionally as array)</td>
<td><a href="#getAlias()"><code>getAlias()</code></a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#IDENTIFIERS_KEY" title="class or interface in org.opengis.referencing" class="external-link">"identifiers"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link"><code>ReferenceIdentifier</code></a> (optionally as array)</td>
<td><a href="#getIdentifiers()"><code>getIdentifiers()</code></a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#REMARKS_KEY" title="class or interface in org.opengis.referencing" class="external-link">"remarks"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link"><code>InternationalString</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="#getRemarks()"><code>getRemarks()</code></a></td>
</tr>
<tr>
<td><a href="#DEPRECATED_KEY">"deprecated"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link"><code>Boolean</code></a></td>
<td><a href="#isDeprecated()"><code>isDeprecated()</code></a></td>
</tr>
<tr>
<td><a href="#LOCALE_KEY">"locale"</a></td>
<td><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Locale.html" title="class or interface in java.util" class="external-link"><code>Locale</code></a></td>
<td>(none)</td>
</tr>
</table>
<h4>Localization</h4>
All localizable attributes like <code>"remarks"</code> may have a language and country code suffix.
For example, the <code>"remarks_fr"</code> property stands for remarks in <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Locale.html#FRENCH" title="class or interface in java.util" class="external-link">French</a> and
the <code>"remarks_fr_CA"</code> property stands for remarks in <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Locale.html#CANADA_FRENCH" title="class or interface in java.util" class="external-link">French Canadian</a>.
They are convenience properties for building the <code>International­String</code> value.
<p>The <code>"locale"</code> property applies only in case of exception for formatting the error message, and
is used only on a <cite>best effort</cite> basis. The locale is discarded after successful construction
since localizations are applied by the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html#toString(java.util.Locale)" title="class or interface in org.opengis.util" class="external-link"><code>International­String​.to­String(Locale)</code></a> method.</p>
<h4>Properties map versus explicit arguments</h4>
Generally speaking, information provided in the <code>properties</code> map are considered ignorable metadata
while information provided in explicit arguments to the sub-class constructors have an impact on coordinate
transformation results. See <a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>equals(Object, Comparison­Mode)</code></a> for more information.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties to be given to this identified object.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if a property has an invalid value.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.referencing.IdentifiedObject)">
<h3>AbstractIdentifiedObject</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">AbstractIdentifiedObject</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a>&nbsp;object)</span></div>
<div class="block">Constructs a new identified object with the same values than the specified one.
This copy constructor provides a way to convert an arbitrary implementation into a SIS one or a
user-defined one (as a subclass), usually in order to leverage some implementation-specific API.
<p>This constructor performs a shallow copy, i.e. the properties are not cloned.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - the object to shallow copy.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="castOrCopy(org.opengis.referencing.IdentifiedObject)">
<h3>castOrCopy</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="AbstractIdentifiedObject.html" title="class in org.apache.sis.referencing">AbstractIdentifiedObject</a></span>&nbsp;<span class="element-name">castOrCopy</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a>&nbsp;object)</span></div>
<div class="block">Returns a SIS identified object implementation with the values of the given arbitrary implementation.
This method performs the first applicable action in the following choices:
<ul>
<li>If the given object is <code>null</code>, then this method returns <code>null</code>.</li>
<li>Otherwise if the given object is an instance of
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link"><code>Coordinate­Reference­System</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link"><code>Coordinate­System</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystemAxis.html" title="class or interface in org.opengis.referencing.cs" class="external-link"><code>Coordinate­System­Axis</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/Datum.html" title="class or interface in org.opengis.referencing.datum" class="external-link"><code>Datum</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/Ellipsoid.html" title="class or interface in org.opengis.referencing.datum" class="external-link"><code>Ellipsoid</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/PrimeMeridian.html" title="class or interface in org.opengis.referencing.datum" class="external-link"><code>Prime­Meridian</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Operation­Method</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Coordinate­Operation</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterDescriptor.html" title="class or interface in org.opengis.parameter" class="external-link"><code>Parameter­Descriptor</code></a> or
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterDescriptorGroup.html" title="class or interface in org.opengis.parameter" class="external-link"><code>Parameter­Descriptor­Group</code></a>,
then this method delegates to the <code>cast­Or­Copy(…)</code> method of the corresponding SIS subclass.
Note that if the given object implements more than one of the above-cited interfaces,
then the <code>cast­Or­Copy(…)</code> method to be used is unspecified.</li>
<li>Otherwise if the given object is already an instance of
<code>Abstract­Identified­Object</code>, then it is returned unchanged.</li>
<li>Otherwise a new <code>Abstract­Identified­Object</code> instance is created using the
<a href="#%3Cinit%3E(org.opengis.referencing.IdentifiedObject)">copy constructor</a> and returned.
Note that this is a <em>shallow</em> copy operation, because the other
properties contained in the given object are not recursively copied.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - the object to get as a SIS implementation, or <code>null</code> if none.</dd>
<dt>Returns:</dt>
<dd>a SIS implementation containing the values of the given object (may be the
given object itself), or <code>null</code> if the argument was null.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getInterface()">
<h3>getInterface</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a>&gt;</span>&nbsp;<span class="element-name">getInterface</span>()</div>
<div class="block">Returns the GeoAPI interface implemented by this class.
This information is part of the data compared by <a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>equals(Object, Comparison­Mode)</code></a>.
<p>The default implementation returns <code>Identified­Object​.class</code>.
Subclasses implementing a more specific GeoAPI interface shall override this method.</p>
<h4>Invariants</h4>
The following invariants must hold for all <code>Abstract­Identified­Object</code> instances:
<ul>
<li><code>get­Interface().<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html#isInstance(java.lang.Object)" title="class or interface in java.lang" class="external-link">is­Instance</a>(this)</code>
shall return <code>true</code>.</li>
<li>If <code>A​.get­Class() == B​.get­Class()</code> is <code>true</code>, then
<code>A​.get­Interface() == B​.get­Interface()</code> shall be <code>true</code>.
Note that the converse does not need to hold.</li>
</ul></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the GeoAPI interface implemented by this class.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getName()">
<h3>getName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link">ReferenceIdentifier</a></span>&nbsp;<span class="element-name">getName</span>()</div>
<div class="block">Returns the primary name by which this object is identified.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getName()" title="class or interface in org.opengis.referencing" class="external-link">get­Name</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code></dd>
<dt>Returns:</dt>
<dd>the primary name.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="IdentifiedObjects.html#getName(org.opengis.referencing.IdentifiedObject,org.opengis.metadata.citation.Citation)"><code>Identified­Objects​.get­Name(Identified­Object, Citation)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getAlias()">
<h3>getAlias</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/GenericName.html" title="class or interface in org.opengis.util" class="external-link">GenericName</a>&gt;</span>&nbsp;<span class="element-name">getAlias</span>()</div>
<div class="block">Returns alternative names by which this object is identified.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getAlias()" title="class or interface in org.opengis.referencing" class="external-link">get­Alias</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code></dd>
<dt>Returns:</dt>
<dd>the aliases, or an empty collection if there is none.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#getName()"><code>get­Name()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getIdentifiers()">
<h3>getIdentifiers</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceIdentifier.html" title="class or interface in org.opengis.referencing" class="external-link">ReferenceIdentifier</a>&gt;</span>&nbsp;<span class="element-name">getIdentifiers</span>()</div>
<div class="block">Returns identifiers which references elsewhere the object's defining information.
Alternatively, identifiers by which this object can be referenced.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getIdentifiers()" title="class or interface in org.opengis.referencing" class="external-link">get­Identifiers</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code></dd>
<dt>Returns:</dt>
<dd>this object identifiers, or an empty set if there is none.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="IdentifiedObjects.html#getIdentifier(org.opengis.referencing.IdentifiedObject,org.opengis.metadata.citation.Citation)"><code>Identified­Objects​.get­Identifier(Identified­Object, Citation)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDescription()">
<h3>getDescription</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link">InternationalString</a></span>&nbsp;<span class="element-name">getDescription</span>()</div>
<div class="block">Returns a narrative explanation of the role of this object.
<h4>Default value</h4>
The default implementation returns the <a href="ImmutableIdentifier.html#getDescription()">description</a>
provided by this object's <a href="#getName()">name</a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a narrative explanation of the role of this object, or <code>null</code> if none.</dd>
<dt>Since:</dt>
<dd>0.6</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="ImmutableIdentifier.html#getDescription()"><code>Immutable­Identifier​.get­Description()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getRemarks()">
<h3>getRemarks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/InternationalString.html" title="class or interface in org.opengis.util" class="external-link">InternationalString</a></span>&nbsp;<span class="element-name">getRemarks</span>()</div>
<div class="block">Returns comments on or information about this object, including data source information.
If this object <a href="#isDeprecated()">is deprecated</a>, then the remarks should give
indication about the replacement (e.g. <cite>"superceded by …"</cite>).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../util/Deprecable.html#getRemarks()">get­Remarks</a></code>&nbsp;in interface&nbsp;<code><a href="../util/Deprecable.html" title="interface in org.apache.sis.util">Deprecable</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getRemarks()" title="class or interface in org.opengis.referencing" class="external-link">get­Remarks</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code></dd>
<dt>Returns:</dt>
<dd>the remarks, or <code>null</code> if none.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isDeprecated()">
<h3>isDeprecated</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDeprecated</span>()</div>
<div class="block">Returns <code>true</code> if this object is deprecated. Deprecated objects exist in some
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/AuthorityFactory.html" title="class or interface in org.opengis.referencing" class="external-link">authority factories</a> like the EPSG database.
If this method returns <code>true</code>, then the <a href="#getRemarks()">remarks</a> should give
indication about the replacement (e.g. <cite>"superceded by …"</cite>).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../util/Deprecable.html#isDeprecated()">is­Deprecated</a></code>&nbsp;in interface&nbsp;<code><a href="../util/Deprecable.html" title="interface in org.apache.sis.util">Deprecable</a></code></dd>
<dt>Returns:</dt>
<dd><code>true</code> if this object is deprecated.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isHeuristicMatchForName(java.lang.String)">
<h3>isHeuristicMatchForName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isHeuristicMatchForName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="block">Returns <code>true</code> if either the <a href="#getName()">primary name</a> or at least
one <a href="#getAlias()">alias</a> matches the given string according heuristic rules.
The default implementation returns <code>true</code> if the given <code>name</code> is equal,
ignoring aspects documented below, to one of the following names:
<ul>
<li>The <a href="#getName()">primary name</a>'s <a href="ImmutableIdentifier.html#getCode()">code</a>
(without <a href="ImmutableIdentifier.html#getCodeSpace()">codespace</a>).</li>
<li>Any <a href="#getAlias()">alias</a>'s <a href="NamedIdentifier.html#tip()">tip</a>
(without <a href="NamedIdentifier.html#scope()">scope</a> and namespace).</li>
</ul>
The comparison ignores the following aspects:
<ul>
<li>Lower/upper cases.</li>
<li>Some Latin diacritical signs (e.g. <code>"Réunion"</code> and <code>"Reunion"</code> are considered equal).</li>
<li>All characters that are not <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Character.html#isLetterOrDigit(int)" title="class or interface in java.lang" class="external-link">letters or digits</a>
(e.g. <code>"Mercator (1SP)"</code> and <code>"Mercator_1SP"</code> are considered equal).</li>
<li>Namespaces or scopes, because this method is typically invoked with either the value of another
<code>Identified­Object​.get­Name()​.get­Code()</code> or with the <cite>Well Known Text</cite> (WKT)
projection or parameter name.</li>
</ul>
<h4>Usage</h4>
This method is invoked by SIS when comparing in <a href="../util/ComparisonMode.html#IGNORE_METADATA"><code>IGNORE_METADATA</code></a> mode
two objects that can be differentiated only by some identifier (name or alias), like
<a href="cs/DefaultCoordinateSystemAxis.html" title="class in org.apache.sis.referencing.cs">coordinate system axes</a>,
<a href="datum/AbstractDatum.html" title="class in org.apache.sis.referencing.datum">datum</a>,
<a href="../parameter/DefaultParameterDescriptor.html" title="class in org.apache.sis.parameter">parameters</a> and
<a href="operation/DefaultOperationMethod.html" title="class in org.apache.sis.referencing.operation">operation methods</a>.
See <a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>equals(Object, Comparison­Mode)</code></a> for more information.
<p>This method is also invoked when searching a parameter or operation method for a given name.
For example, the same projection is known as <code>"Mercator (variant A)"</code> (the primary name according EPSG)
and <code>"Mercator (1SP)"</code> (the legacy name prior EPSG 7.6). Since the latter is still in frequent use, SIS
accepts it as an alias of the <cite>Mercator (variant A)</cite> projection.</p>
<h4>Overriding by subclasses</h4>
Some subclasses add more flexibility to the comparisons:
<ul>
<li><a href="cs/DefaultCoordinateSystemAxis.html#isHeuristicMatchForName(java.lang.String)">Comparisons of coordinate system axis names</a> consider <code>"Lat"</code>, <code>"Latitude"</code> and
<code>"Geodetic latitude"</code> as synonymous, and likewise for longitude.</li>
<li><a href="datum/AbstractDatum.html#isHeuristicMatchForName(java.lang.String)">Comparisons of datum names</a> ignore the <code>"D_"</code> prefix, if any.
This prefix appears in ESRI datum name (e.g. <code>"D_WGS_1984"</code>).</li>
<li><a href="datum/DefaultGeodeticDatum.html#isHeuristicMatchForName(java.lang.String)">Comparisons of geodetic datum names</a> may ignore the prime meridian name, if any.
Example: <cite>"(Paris)"</cite> in <cite>"Nouvelle Triangulation Française (Paris)"</cite>.</li>
</ul>
<h4>Future evolutions</h4>
This method implements recommendations from the
<a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#139">WKT 2 specification §B.5.2</a>,
together with heuristic rules learned from experience while trying to provide inter-operability
with different data producers. Those rules may be adjusted in any future SIS version according experience
gained while working with more data producers.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>name</code> - the name to compare with the object name or aliases.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the primary name or at least one alias matches the specified <code>name</code>.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="IdentifiedObjects.html#isHeuristicMatchForName(org.opengis.referencing.IdentifiedObject,java.lang.String)"><code>Identified­Objects​.is­Heuristic­Match­For­Name(Identified­Object, String)</code></a></li>
<li><a href="../util/Characters.Filter.html#LETTERS_AND_DIGITS"><code>Characters​.Filter​.LETTERS_AND_DIGITS</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
<a href="../util/ComparisonMode.html" title="enum class in org.apache.sis.util">ComparisonMode</a>&nbsp;mode)</span></div>
<div class="block">Compares this object with the given object for equality.
The strictness level is controlled by the second argument,
from stricter to more permissive values:
<table class="sis">
<caption>Description of comparison modes</caption>
<tr><th>Mode</th><th>Description</th></tr>
<tr><td><a href="../util/ComparisonMode.html#STRICT"><code>STRICT</code></a>:</td>
<td>Verifies if the two objects are of the same <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">class</a>
and compares all public properties, including SIS-specific (non standard) properties.</td></tr>
<tr><td><a href="../util/ComparisonMode.html#BY_CONTRACT"><code>BY_CONTRACT</code></a>:</td>
<td>Verifies if the two objects implement the same <a href="#getInterface()">GeoAPI interface</a>
and compares all properties defined by that interface (<a href="#getName()">name</a>,
<a href="#getIdentifiers()">identifiers</a>, <a href="#getRemarks()">remarks</a>, <i>etc</i>).
The two objects do not need to be instances of the same implementation class
and SIS-specific properties are ignored.</td></tr>
<tr><td><a href="../util/ComparisonMode.html#IGNORE_METADATA"><code>IGNORE_METADATA</code></a>:</td>
<td>Compares only the properties relevant to coordinate transformations. Generally speaking, the content
of the <code>properties</code> map given at <a href="#%3Cinit%3E(java.util.Map)">construction time</a>
is considered ignorable metadata while the explicit arguments given to the constructor (if any) are
considered non-ignorable. Note that there is some exceptions to this rule of thumb — see
<cite>When object name matter</cite> below.</td></tr>
<tr><td><a href="../util/ComparisonMode.html#APPROXIMATE"><code>APPROXIMATE</code></a>:</td>
<td>Same as <code>IGNORE_METADATA</code>, with some tolerance threshold on numerical values.</td></tr>
<tr><td><a href="../util/ComparisonMode.html#ALLOW_VARIANT"><code>ALLOW_VARIANT</code></a>:</td>
<td>Same as <code>APPROXIMATE</code>, but ignores coordinate system axes.</td></tr>
<tr><td><a href="../util/ComparisonMode.html#DEBUG"><code>DEBUG</code></a>:</td>
<td>Special mode for figuring out why two objects expected to be equal are not.</td></tr>
</table>
The main guideline is that if <code>source­CRS​.equals(target­CRS, IGNORE_METADATA)</code> returns <code>true</code>,
then the transformation from <code>source­CRS</code> to <code>target­CRS</code> should be the identity transform
even if the two CRS do not have the same name.
<h4>When object name matter</h4>
Some subclasses (especially
<a href="cs/DefaultCoordinateSystemAxis.html" title="class in org.apache.sis.referencing.cs"><code>Default­Coordinate­System­Axis</code></a>,
<a href="datum/AbstractDatum.html" title="class in org.apache.sis.referencing.datum"><code>Abstract­Datum</code></a> and
<a href="../parameter/DefaultParameterDescriptor.html" title="class in org.apache.sis.parameter"><code>Default­Parameter­Descriptor</code></a>) will compare the
<a href="#getName()">name</a> even in <code>IGNORE_METADATA</code> mode,
because objects of those types with different names have completely different meaning.
For example, nothing differentiate the <code>"semi_major"</code> and <code>"semi_minor"</code> parameters except the name.
The name comparison may be lenient however, i.e. the rules may accept a name matching an alias.
See <a href="#isHeuristicMatchForName(java.lang.String)"><code>is­Heuristic­Match­For­Name(String)</code></a> for more information.
<h4>Conformance to the <code>equals(Object)</code> method contract</h4>
<a href="../util/ComparisonMode.html#STRICT"><code>Comparison­Mode​.STRICT</code></a> is the only mode compliant with the <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link"><code>Object​.equals(Object)</code></a> contract.
For all other modes, the comparison is not guaranteed to be <cite>symmetric</cite> neither
<cite>transitive</cite>. See <a href="../util/LenientComparable.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>Lenient­Comparable</code></a>
for more information.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../util/LenientComparable.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in interface&nbsp;<code><a href="../util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code></dd>
<dt>Parameters:</dt>
<dd><code>object</code> - the object to compare to <code>this</code>.</dd>
<dd><code>mode</code> - the strictness level of the comparison.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if both objects are equal according the given comparison mode.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#computeHashCode()"><code>compute­Hash­Code()</code></a></li>
<li><a href="../util/Utilities.html#deepEquals(java.lang.Object,java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>Utilities​.deep­Equals(Object, Object, Comparison­Mode)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object)</span></div>
<div class="block">Compares the specified object with this object for equality.
This method is implemented as below (omitting assertions):
<blockquote><pre><font color="green">return</font> <b>equals</b>(other, ComparisonMode.STRICT);</pre></blockquote>
Subclasses shall override <a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>equals(Object, Comparison­Mode)</code></a> instead of this method.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../util/LenientComparable.html#equals(java.lang.Object)">equals</a></code>&nbsp;in interface&nbsp;<code><a href="../util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Parameters:</dt>
<dd><code>object</code> - the other object (may be <code>null</code>).</dd>
<dt>Returns:</dt>
<dd><code>true</code> if both objects are equal.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../util/ComparisonMode.html#STRICT"><code>Comparison­Mode​.STRICT</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
<div class="block">Returns a hash value for this identified object. Two <code>Abstract­Identified­Object</code> instances
for which <a href="#equals(java.lang.Object)"><code>equals(Object)</code></a> returns <code>true</code> shall have the same hash code value, if
the hash codes are computed on the same JVM instance for both objects. The hash code value is
<em>not</em> guaranteed to be stable between different versions of the Apache SIS library, or
between libraries running on different JVM.
<h4>Implementation note</h4>
This method invokes <a href="#computeHashCode()"><code>compute­Hash­Code()</code></a> when first needed, then caches the result.
Subclasses shall override <a href="#computeHashCode()"><code>compute­Hash­Code()</code></a> instead of this method.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Returns:</dt>
<dd>the hash code value. This value may change in any future Apache SIS version.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="computeHashCode()">
<h3>computeHashCode</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">computeHashCode</span>()</div>
<div class="block">Invoked by <a href="#hashCode()"><code>hash­Code()</code></a> for computing the hash code when first needed.
This method is invoked at most once in normal execution, or an arbitrary number of times if Java
assertions are enabled. The hash code value shall never change during the whole lifetime of this
object in a JVM. The hash code value does not need to be the same in two different executions of
the JVM.
<h4>Overriding</h4>
Subclasses can override this method for using more properties in hash code calculation.
All <code>compute­Hash­Code()</code> methods shall invoke <code>super​.compute­Hash­Code()</code>,
<strong>not</strong> <code>hash­Code()</code>. Example:
<blockquote><pre>@Override
<font color="green">protected</font> <font color="green">long</font> <b>computeHashCode</b>() {
<font color="green">return</font> <font color="green">super</font>.<b>computeHashCode</b>() + 31 * Objects.<b>hash</b>(myProperties);
}</pre></blockquote></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the hash code value. This value may change in any future Apache SIS version.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="formatTo(org.apache.sis.io.wkt.Formatter)">
<h3>formatTo</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">formatTo</span><wbr><span class="parameters">(<a href="../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</span></div>
<div class="block">Formats the inner part of the <cite>Well Known Text</cite> (WKT) representation for this object.
The default implementation writes the following elements:
<ul>
<li>The object <a href="#getName()">name</a>.</li>
</ul>
Keywords and metadata (scope, extent, identifier and remarks) shall not be formatted here.
For example if this formattable element is for a <code>Geodetic­CRS[…]</code> element,
then subclasses shall write the content starting at the insertion point shown below:
<div class="horizontal-flow">
<div><p><b>WKT example</b></p>
<blockquote><pre>GeodeticCRS["WGS 84", ID["EPSG", 4326]]
(insertion point)</pre></blockquote>
</div><div>
<p><b>Java code example</b></p>
<blockquote><pre><font color="green">super</font>.<b>formatTo</b>(formatter);
<i><font color="gray">// ... write the elements at the insertion point ...</font></i>
<font color="green">return</font> <font color="orangered">"GeodeticCRS"</font>;</pre></blockquote>
</div></div>
<h4>Formatting non-standard WKT</h4>
If the implementation cannot represent this object without violating some WKT constraints,
it can uses its own (non-standard) keywords but shall declare that it did so by invoking one
of the <a href="../io/wkt/Formatter.html#setInvalidWKT(org.opengis.referencing.IdentifiedObject,java.lang.Exception)"><code>Formatter​.set­Invalid­WKT(…)</code></a>
methods.
<p>Alternatively, the implementation may also have no WKT keyword for this object.
In such case, this method shall return <code>null</code>.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../io/wkt/FormattableObject.html#formatTo(org.apache.sis.io.wkt.Formatter)">format­To</a></code>&nbsp;in class&nbsp;<code><a href="../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">Formattable­Object</a></code></dd>
<dt>Parameters:</dt>
<dd><code>formatter</code> - the formatter where to format the inner content of this WKT element.</dd>
<dt>Returns:</dt>
<dd>the <a href="../io/wkt/KeywordCase.html#CAMEL_CASE">CamelCase</a> keyword
for the WKT element, or <code>null</code> if unknown.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#21">WKT 2 specification §7</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="formatTo(java.util.Formatter,int,int,int)">
<h3>formatTo</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">formatTo</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formatter.html" title="class or interface in java.util" class="external-link">Formatter</a>&nbsp;formatter,
int&nbsp;flags,
int&nbsp;width,
int&nbsp;precision)</span></div>
<div class="block">Formats the name or identifier of this object using the provider formatter.
This method is invoked when an <code>Identified­Object</code> object is formatted
using the <code>"%s"</code> conversion specifier of <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formatter.html" title="class or interface in java.util" class="external-link"><code>Formatter</code></a>.
Users don't need to invoke this method explicitly.
<p>If the alternate flags is present (as in <code>"%#s"</code>), then this method
will format the identifier (if present) instead of the object name.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formattable.html#formatTo(java.util.Formatter,int,int,int)" title="class or interface in java.util" class="external-link">format­To</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formattable.html" title="class or interface in java.util" class="external-link">Formattable</a></code></dd>
<dt>Parameters:</dt>
<dd><code>formatter</code> - the formatter in which to format this identified object.</dd>
<dd><code>flags</code> - whether to apply left alignment, use upper-case letters and/or use alternate form.</dd>
<dd><code>width</code> - minimal number of characters to write, padding with <code>' '</code> if necessary.</dd>
<dd><code>precision</code> - maximal number of characters to write, or -1 if no limit.</dd>
<dt>Since:</dt>
<dd>1.1</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="IdentifiedObjects.html#getName(org.opengis.referencing.IdentifiedObject,org.opengis.metadata.citation.Citation)"><code>Identified­Objects​.get­Name(Identified­Object, Citation)</code></a></li>
<li><a href="IdentifiedObjects.html#getIdentifierOrName(org.opengis.referencing.IdentifiedObject)"><code>Identified­Objects​.get­Identifier­Or­Name(Identified­Object)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2010&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>