<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>AnnotatedNullability (infer.Nullsafe.AnnotatedNullability)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.1"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Nullsafe</a>» AnnotatedNullability</nav><h1>Module <code>Nullsafe.AnnotatedNullability</code></h1></header><aside><p>Nullability of a type in Java program (e.g. in a function or field declaration). It might come from explicit annotations (or lack of annotation), or from other sources, including conventions about defaults, models, or the mode nullsafe runs in. NOTE: This is complementary to <ahref="../InferredNullability/index.html#type-t"><code>InferredNullability.t</code></a>. <ahref="../InferredNullability/index.html"><code>InferredNullability</code></a> contains info about _actual_ nullability (what did nullsafe infer according to its flow-sensitive rules.). In contrast, AnnotatedNullability represents _formal_ type as it appears in the program code. NOTE: Nullsafe disregards user-provided annotations for local types, so annotated nullability applies only for types declared at methods and field level.</p></aside><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><tableclass="variant"><trid="type-t.Nullable"class="anchored"><tdclass="def constructor"><ahref="#type-t.Nullable"class="anchor"></a><code>| </code><code><spanclass="constructor">Nullable</span><spanclass="keyword">of</span><ahref="index.html#type-nullable_origin">nullable_origin</a></code></td></tr><trid="type-t.ThirdPartyNonnull"class="anchored"><tdclass="def constructor"><ahref="#type-t.ThirdPartyNonnull"class="anchor"></a><code>| </code><code><spanclass="constructor">ThirdPartyNonnull</span></code></td></tr><trid="type-t.UncheckedNonnull"class="anchored"><tdclass="def constructor"><ahref="#type-t.UncheckedNonnull"class="anchor"></a><code>| </code><code><spanclass="constructor">UncheckedNonnull</span><spanclass="keyword">of</span><ahref="index.html#type-unchecked_nonnull_origin">unchecked_nonnull_origin</a></code></td></tr><trid="type-t.LocallyTrustedNonnull"class="anchored"><tdclass="def constructor"><ahref="#type-t.LocallyTrustedNonnull"class="anchor"></a><code>| </code><code><spanclass="constructor">LocallyTrustedNonnull</span></code></td></tr><trid="type-t.LocallyCheckedNonnull"class="anchored"><tdclass="def constructor"><ahref="#type-t.LocallyCheckedNonnull"class="anchor"></a><code>| </code><code><spanclass="constructor">LocallyCheckedNonnull</span></code></td></tr><trid="type-t.StrictNonnull"class="anchored"><tdclass="def constructor"><ahref="#type-t.StrictNonnull"class="anchor"></a><code>| </code><code><spanclass="constructor">StrictNonnull</span><spanclass="keyword">of</span><ahref="index.html#type-strict_nonnull_origin">strict_nonnull_origin</a></code></td></tr></table></dt><dd><p>See <ahref="../Nullability/index.html#type-t"><code>Nullability.t</code></a> for explanation</p></dd></dl><dl><dtclass="spec type"id="type-nullable_origin"><ahref="#type-nullable_origin"class="anchor"></a><code><spanclass="keyword">and</span> nullable_origin</code><code> = </code><tableclass="variant"><trid="type-nullable_origin.AnnotatedNullable"class="anchored"><tdclass="def constructor"><ahref="#type-nullable_origin.AnnotatedNullable"class="anchor"></a><code>| </code><code><spanclass="constructor">AnnotatedNullable</span></code></td><tdclass="doc"><p>The type is expicitly annotated with <code>@Nullable</code> in the code</p></td></tr><trid="type-nullable_origin.AnnotatedPropagatesNullable"class="anchored"><tdclass="def constructor"><ahref="#type-nullable_orig