Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

@Nullable annotation usage

I saw some method in java declared as:

void foo(@Nullable Object obj) { ... } 

What's the meaning of @Nullable here? Does it mean the input could be null?

Without the annotation, the input can still be null, so I guess that's not just it?

like image 237
user1508893 Avatar asked Dec 28 '12 21:12

user1508893


2 Answers

It makes it clear that the method accepts null values, and that if you override the method, you should also accept null values.

It also serves as a hint for code analyzers like FindBugs. For example, if such a method dereferences its argument without checking for null first, FindBugs will emit a warning.

like image 108
JB Nizet Avatar answered Nov 07 '22 10:11

JB Nizet


This annotation is commonly used to eliminate NullPointerExceptions. @Nullable says that this parameter might be null. A good example of such behaviour can be found in Google Guice. In this lightweight dependency injection framework you can tell that this dependency might be null. If you would try to pass null without an annotation the framework would refuse to do it's job.

What is more, @Nullable might be used with @NotNull annotation. Here you can find some tips on how to use them properly. Code inspection in IntelliJ checks the annotations and helps to debug the code.

like image 32
Adam Sznajder Avatar answered Nov 07 '22 10:11

Adam Sznajder