summaryrefslogtreecommitdiffstats
path: root/ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java
diff options
context:
space:
mode:
Diffstat (limited to 'ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java')
-rw-r--r--ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java b/ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java
new file mode 100644
index 0000000..01d4d80
--- /dev/null
+++ b/ri/src/main/java/javax/annotation/ParametersAreNullableByDefault.java
@@ -0,0 +1,30 @@
+package javax.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.annotation.meta.TypeQualifierDefault;
+
+/**
+ * This annotation can be applied to a package, class or method to indicate that
+ * the method parameters in that element are nullable by default unless there is:
+ * <ul>
+ * <li>An explicit nullness annotation
+ * <li>The method overrides a method in a superclass (in which case the
+ * annotation of the corresponding parameter in the superclass applies)
+ * <li> there is a default parameter annotation applied to a more tightly nested
+ * element.
+ * </ul>
+ * <p>This annotation implies the same "nullness" as no annotation. However, it is different
+ * than having no annotation, as it is inherited and it can override a ParametersAreNonnullByDefault
+ * annotation at an outer scope.
+ *
+ */
+@Documented
+@Nullable
+@TypeQualifierDefault(ElementType.PARAMETER)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ParametersAreNullableByDefault {
+}