# Interface Emptiable

All Known Implementing Classes:
  `AbstractCompleteness, AbstractContentInformation, AbstractDataEvaluation, AbstractElement, AbstractEnvelope, AbstractGeographicExtent, AbstractGeolocationInformation, AbstractIdentification, AbstractLogicalConsistency, AbstractMetadata, AbstractMetaquality, AbstractParty, AbstractPositionalAccuracy, AbstractResult, AbstractSpatialRepresentation, AbstractTemporalAccuracy, AbstractTemporalQuality, AbstractThematicAccuracy, DefaultAbsoluteExternalPositionalAccuracy, DefaultAccuracyOfATimeMeasurement, DefaultAcquisitionInformation, DefaultAddress, DefaultAggregateInformation, DefaultAggregationDerivation, DefaultAlgorithm, DefaultApplicationSchemaInformation, DefaultAssociatedResource, DefaultAttributeGroup, DefaultBand, DefaultBasicMeasure, DefaultBoundingPolygon, DefaultBrowseGraphic, DefaultCitation, DefaultCitationDate, DefaultCompletenessCommission, DefaultCompletenessOmission, DefaultConceptualConsistency, DefaultConfidence, DefaultConformanceResult, DefaultConstraints, DefaultContact, DefaultCoupledResource, DefaultCoverageDescription, DefaultCoverageResult, DefaultDataFile, DefaultDataIdentification, DefaultDataQuality, DefaultDescriptiveResult, DefaultDigitalTransferOptions, DefaultDimension, DefaultDistribution, DefaultDistributor, DefaultDomainConsistency, DefaultEnvironmentalRecord, DefaultEvaluationMethod, DefaultEvaluationReportInformation, DefaultEvent, DefaultExtendedElementInformation, DefaultExtent, DefaultFeatureCatalogueDescription, DefaultFeatureTypeInfo, DefaultFormat, DefaultFormatConsistency, DefaultFullInspection, DefaultGCP, DefaultGCPCollection, DefaultGeographicBoundingBox, DefaultGeographicDescription, DefaultGeometricObjects, DefaultGeorectified, DefaultGeoreferenceable, DefaultGriddedDataPositionalAccuracy, DefaultGridSpatialRepresentation, DefaultHomogeneity, DefaultIdentifier, DefaultImageDescription, DefaultIndirectEvaluation, DefaultIndividual, DefaultInstrument, DefaultKeywordClass, DefaultKeywords, DefaultLegalConstraints, DefaultLineage, DefaultMaintenanceInformation, DefaultMeasureDescription, DefaultMeasureReference, DefaultMedium, DefaultMetadata, DefaultMetadataExtensionInformation, DefaultMetadataScope, DefaultNominalResolution, DefaultNonQuantitativeAttributeAccuracy, DefaultNonQuantitativeAttributeCorrectness, DefaultObjective, DefaultOnlineResource, DefaultOperation, DefaultOperationChainMetadata, DefaultOperationMetadata, DefaultOrganisation, DefaultPlan, DefaultPlatform, DefaultPlatformPass, DefaultPortrayalCatalogueReference, DefaultProcessing, DefaultProcessStep, DefaultProcessStepReport, DefaultQualityMeasure, DefaultQuantitativeAttributeAccuracy, DefaultQuantitativeResult, DefaultRangeDimension, DefaultRangeElementDescription, DefaultRelativeInternalPositionalAccuracy, DefaultReleasability, DefaultRepresentativeFraction, DefaultRepresentativity, DefaultRequestedDate, DefaultRequirement, DefaultResolution, DefaultResponsibility, DefaultResponsibleParty, DefaultSampleBasedInspection, DefaultSampleDimension, DefaultScope, DefaultScope, DefaultScopeDescription, DefaultSecurityConstraints, DefaultSeries, DefaultServiceIdentification, DefaultSource, DefaultSourceReference, DefaultSpatialTemporalExtent, DefaultStandardOrderProcess, DefaultTelephone, DefaultTemporalConsistency, DefaultTemporalExtent, DefaultTemporalValidity, DefaultThematicClassificationCorrectness, DefaultTopologicalConsistency, DefaultUsability, DefaultUsage, DefaultVectorSpatialRepresentation, DefaultVerticalExtent, Envelope2D, FeatureQuery, GeneralEnvelope, ImmutableEnvelope, ISOMetadata, MeasurementRange, ModifiableMetadata, NumberRange, Range`

public interface Emptiable
Interface of classes for which empty instances may exist. This interface is typically used for filtering empty elements from a tree of objects. Some examples of emptiable classes are:

- `Range` when the lower bounds is equal to the upper bounds and at least one bound is exclusive.
- `AbstractMetadata` when no property value has been given to the metadata, or all properties are themselves empty.
- `AbstractEnvelope` when the span, surface or volume inside the envelope is zero.

SIS collections do not implement this interface even if they provide a `isEmpty()` method, for consistency with collections in `java​.util` and other libraries. This policy avoid duplicated calls to `isEmpty()` methods when the caller needs to check for both `Collection` and `Emptiable` interfaces.

Since:
  0.4

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isEmpty()`
  Returns `true` if this instance is empty.

- ## Method Details

  - ### isEmpty

    boolean isEmpty()
    Returns `true` if this instance is empty. The definition of "emptiness" may vary between implementations. For example, `DefaultGeographicBoundingBox​.isEmpty()` returns `true` if all values are `NaN` (i.e. uninitialized) while `AbstractEnvelope​.isEmpty()` returns `true` if the geometric surface is zero.
    Returns:
      `true` if this instance is empty, or `false` otherwise.