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?
int is a primitive, null is not a value that it can take on. You could change the method return type to return java. lang. Integer and then you can return null, and existing code that returns int will get autoboxed.
Then programmers that call your method know that they should check if the return value is null: ? Hi there, Yes it can be considered a valid return technique, it just needs to be clearly documented in the Javadoc for that method e.g. "Returns x if one exists else null".
In Java, a null value can be assigned to an object reference of any type to indicate that it points to nothing. The compiler assigns null to any uninitialized static and instance members of reference type. In the absence of a constructor, the getArticles() and getName() methods will return a null reference.
The problem appears when Get is invoked on a cache which doesn't contain the item with specified key value. In that case, Get just returns the default value for the item type T – in reference types that means null. It is obvious that the client must guard from receiving null result back from the method call.
int
is a primitive, null is not a value that it can take on. You could change the method return type to return java.lang.Integer
and then you can return null, and existing code that returns int will get autoboxed.
Nulls are assigned only to reference types, it means the reference doesn't point to anything. Primitives are not reference types, they are values, so they are never set to null.
Using the object wrapper java.lang.Integer as the return value means you are passing back an Object and the object reference can be null.
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 .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With