Home | History | Annotate | Download | only in annotation
      1 package javax.annotation;
      2 
      3 import java.lang.annotation.Documented;
      4 import java.lang.annotation.ElementType;
      5 import java.lang.annotation.Retention;
      6 import java.lang.annotation.RetentionPolicy;
      7 
      8 import javax.annotation.meta.TypeQualifierDefault;
      9 
     10 /**
     11  * This annotation can be applied to a package, class or method to indicate that
     12  * the method parameters in that element are nullable by default unless there is:
     13  * <ul>
     14  * <li>An explicit nullness annotation
     15  * <li>The method overrides a method in a superclass (in which case the
     16  * annotation of the corresponding parameter in the superclass applies)
     17  * <li> there is a default parameter annotation applied to a more tightly nested
     18  * element.
     19  * </ul>
     20  * <p>This annotation implies the same "nullness" as no annotation. However, it is different
     21  * than having no annotation, as it is inherited and it can override a ParametersAreNonnullByDefault
     22  * annotation at an outer scope.
     23  *
     24  */
     25 @Documented
     26 @Nullable
     27 @TypeQualifierDefault(ElementType.PARAMETER)
     28 @Retention(RetentionPolicy.RUNTIME)
     29 public @interface ParametersAreNullableByDefault {
     30 }
     31