Skip to content

Reduce the use of wildcards in return values #90

@desruisseaux

Description

@desruisseaux

All Java interfaces in org.opengis.metadata packages currently use wildcard when a method returns a collection. For example:

interface Citation {
    // Wildcards are the "? extends" part.
    Collection<? extends Identifier> getIdentifiers();
}

The use of wildcards in return values is a deprecated practice. It has been reported as a problem by a GeoAPI user on StackOverflow. Historically, the reason for wildcards was because it was said to be necessary for JAXB and Hibernate implementations 15 years ago. But at least in JAXB case, wildcards are actually not necessary because the problem raised in that discussion can be resolved with adapters (which is what Apache SIS does).

Proposal

GeoAPI aims for semantic versioning, which forbid compatibility break between GeoAPI 3.0 and 3.1. So the proposal is:

  • Remove most or all wildcards in org.opengis.metadata packages on the GeoAPI 4.0 branch.
  • On the GeoAPI 3.1 branch, keep wildcards on methods that were already present in GeoAPI 3.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    JavaSpecific to the Java language or Java profile of GeoAPI

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions