Interface FeatureType

All Superinterfaces:
IdentifiedType

Abstraction of a real-world phenomena. A FeatureType instance describes the class of all Feature instances of that type.
Analogy with Java reflection: compared to the Java language, FeatureType is equivalent to Class while Feature instances are equivalent to Object instances of that class.

Naming

The feature type name is mandatory and should be unique. Names can be ScopedName for avoiding name collision.

Properties and inheritance

Each feature type can provide descriptions for the following properties: In addition, a feature type can inherit the properties of one or more other feature types. Properties defined in the sub-type can override properties of the same name defined in the super-types, provided that values of the sub-type property are assignable to the super-type property.
Analogy with Java language: compared to the Java language, the above rule is similar to overriding a method with a more specific return type (a.k.a. covariant return type). This is also similar to Java arrays, which are implicitly covariant (i.e. String[] can be casted to CharSequence[], which is safe for read operations but not for write operations — the latter may throw ArrayStoreException).
Since:
3.1
See Also: