WeakReference with null referent

Per Liden per.liden at oracle.com
Mon Jul 9 19:59:03 UTC 2018

On 2018-07-09 20:49, mandy chung wrote:
> On 7/9/18 11:31 AM, Zheka Kozlov wrote:
>> It is possible to create a WeakReference/SoftReference/PhantomReference
>> with a null value in which case the Reference will never be enqueued. 
>> This
>> is quite obvious (since null cannot be weakly/softly/phantom reachable).
>> But I think it's worth being mentioned in the JavaDoc. What do you think?
> Alternatively, the constructor should require non-null referent and 
> throws NPE if null.
> I created https://bugs.openjdk.java.net/browse/JDK-8206933 to track this.

It's not completely obvious to me that throwing NPE or otherwise 
blocking this is the right thing to do. Sure, creating a Reference with 
a null referent seems pretty useless, but it's also very similar to 
creating a Reference and immediately calling its clear() method, which 
is perfectly valid (and equally useless).

Are you saying we should block this because we can easily detect this 
particular case/misuse, as opposed to the immediately-called-clear case? 
Or is there some other rationale?


More information about the core-libs-dev mailing list