@Documented @Target(value=TYPE) @Retention(value=RUNTIME) public @interface Covariant
MyClass
has a single type parameter that is
treated covariantly, and if B
is a subtype of A
, then
SomeClass<B>
is a subtype of SomeClass<B>
.
Ordinarily, Java treats type parameters invariantly:
SomeClass<B>
is unrelated to (neither a subtype nor a
supertype of) SomeClass<A>
.
It is only safe to mark a type parameter as covariant if the type
parameter is used in a read-only way: values of that type are read from
but never modified. This property is not checked; the
@Covariant
is simply trusted.
Modifier and Type | Required Element and Description |
---|---|
int[] |
value
The zero-based indices of the type parameters that should be treated
covariantly.
|