Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unclear inspection warning "NullableProblems" in IntelliJ

Why am I getting a warning from the "NullableProblems" inspection in IntelliJ on this:

public class Test implements Comparable<Test> {     @Override     public int compareTo(Test o) {         return 0;     } } 

I'm using IntelliJ 14.1.4 and compiling with Java 1.7

Screenshot:

enter image description here

Adding @NotNull before the argument doesn't help:

enter image description here

like image 648
traveh Avatar asked Jul 06 '15 09:07

traveh


1 Answers

From Comparable.compareTo:

@throws NullPointerException if the specified object is null 

So IntelliJ knows, that the object should not be null and adds a @NotNull annotation automatically:

IntelliJ IDEA will look carefully at SDK and libraries bytecode and will infer these annotations automatically so that they can later be used to analyze source code to spot places where you overlooked null.

Your overriden method doesn't include this annotation, so it overrides this behavior making the parameter nullable - against the contract of the Comparable interface.

You can solve this by adding @NotNull before the parameter.

You can also disable this inspection by pressing Alt + Enter, selecting the warning in the popup menu and selecting Disable inspection in the sub-menu.

Check out the Web Help and this thread for more information about @NotNull / @NonNull annotations.

like image 104
Darek Kay Avatar answered Sep 23 '22 05:09

Darek Kay