I\'m looking to make my code more readable as well as use tooling like IDE code inspection and/or static code analysis (FindBugs and Sonar) to avoid NullPointerExceptions.
There are already too many answers here, but (a) it's 2019, and there's still no "standard" Nullable
and (b) no other answer references Kotlin.
The reference to Kotlin is important, because Kotlin is 100% interoperable with Java and it has a core Null Safety feature. When calling Java libraries, it can take advantage of those annotations to let Kotlin tools know if a Java API can accept or return null
.
As far as I know, the only Nullable
packages compatible with Kotlin are org.jetbrains.annotations
and android.support.annotation
(now androidx.annotation
). The latter is only compatible with Android so it can't be used in non-Android JVM/Java/Kotlin projects. However, the JetBrains package works everywhere.
So if you develop Java packages that should also work in Android and Kotlin (and be supported by Android Studio and IntelliJ), your best choice is probably the JetBrains package.
Maven:
org.jetbrains
annotations-java5
15.0
Gradle:
implementation 'org.jetbrains:annotations-java5:15.0'