scala/scala3

Consider nullable annotations in explicit nulls

Open

#21.629 geöffnet am 23. Sept. 2024

Auf GitHub ansehen
 (9 Kommentare) (3 Reaktionen) (1 zugewiesene Person)Scala (1.159 Forks)batch import
area:nullabilitycompat:javagood first issueitype:enhancementitype:question

Repository-Metriken

Stars
 (6.247 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 18T 14h) (133 gemergte PRs in 30 T)

Beschreibung

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
...

Contributor Guide