Open
Description
The @NotNull
and @NonNullable
type annotations are currently used by explicit nulls to not nullify (or add flexible type to) a reference type from Java signatures.
In addition to these annotations, I suggest we also consider the @Nullable
annotation. It indicates a value can indeed be null. In this case, we will always nullify the type (adding | Null
), instead of adding a flexible type.
// in Java
@Nullable String f(String s)
// in Scala with explicit nulls currently
def f(s: (String)?): (String)?
// in Scala with explicit nulls considering the annotation
def f(s: (String)?): String | Null
A list of @Nullable
annotations we may want to consider:
javax.annotation.Nullable
org.jetbrains.annotations.Nullable
org.jspecify.annotations.Nullable
...