Annotation Type CompatibleWith

@Documented @Retention(CLASS) @Target(PARAMETER) public @interface CompatibleWith
Declares that a parameter to a method must be "compatible with" one of the type parameters in the method's enclosing class, or on the method itself. "Compatible with" means that there can exist a "reference casting conversion" from one type to the other (JLS 5.5.1).

For example, Collection.contains(java.lang.Object) would be annotated as follows:

 interface Collection<E> {
   boolean contains(@CompatibleWith("E") Object o);

To indicate that invocations of Collection.contains(java.lang.Object) must be passed an argument whose type is compatible with the generic type argument of the Collection instance:

 Collection<String> stringCollection = ...;
 boolean shouldBeFalse = stringCollection.contains(42); // BUG! int isn't compatible with String

Note: currently, this annotation can't be used if the method overrides another method that has @CompatibleWith already present.

  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
  • Element Details