@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[] | valueThe zero-based indices of the type parameters that should be treated covariantly. |