public int pollDecrementHigherKey(int x) {
int savedKey, savedValue;
if (this.higherKey(x) == null) {
return null; // COMPILE-TIME ERROR
}
else if (this.get(this.higherKey(x)) > 1) {
savedKey = this.higherKey(x);
savedValue = this.get(this.higherKey(x)) - 1;
this.remove(savedKey);
this.put(savedKey, savedValue);
return savedKey;
}
else {
savedKey = this.higherKey(x);
this.remove(savedKey);
return savedKey;
}
}
The method lies within a class that is an extension of TreeMap, if that makes any difference... Any ideas why I can't return null here?
Do you realy want to return null ? Something you can do, is maybe initialise savedkey with 0 value and return 0 as a null value. It can be more simple.
The type int
is a primitive and it cannot be null
, if you want to return null
, mark the signature as
public Integer pollDecrementHigherKey(int x) {
x = 10;
if (condition) {
return x; // This is auto-boxing, x will be automatically converted to Integer
} else if (condition2) {
return null; // Integer inherits from Object, so it's valid to return null
} else {
return new Integer(x); // Create an Integer from the int and then return
}
return 5; // Also will be autoboxed and converted into Integer
}
int
is a primitive data type . It is not a reference variable which can take null
values . You need to change the method return type to Integer
wrapper class .
Change your return type to java.lang.Integer . This way you can safely return null
Source: Stackoverflow.com