RFR: 8021591 : (s) Additional explicit null checks

Paul Sandoz paul.sandoz at oracle.com
Wed Jul 31 07:10:33 UTC 2013


On Jul 31, 2013, at 12:57 AM, Mike Duigou <mike.duigou at oracle.com> wrote:
>> 
>> 
>> -     * @throws NullPointerException if a specified key or value is null,
>> +     * @throws NullPointerException if a specified key or newValue is null,
>>     *         and this map does not permit null keys or values
>> +     * @throws NullPointerException if oldValue is null and this map does not
>> +     *         permit null values
>> +     *         (<a href="Collection.html#optional-restrictions">optional</a>)
>> 
>> 
>> More curious than anything else, is it fine to have two declarations of NPE here?
> 
> 
> Throwing NPE isn't optional if either key or newValue is null and the map does not permit null values.
> 
> This restriction has to be softened for oldValue because the default implementation doesn't test whether oldValue could be added to the map and doesn't know if the map allows null values. 
> 

Since that restriction is softened by @implSpec does it need to be propagated to the exception? the implication is that overriding implementations could do the same?


> The multiple @throws approach is used as an alternative to a complicated legalistic description in a single throws declaration. It's used uncommonly elsewhere in the JDK. 


OK.

Paul.


More information about the core-libs-dev mailing list