# 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.