WeakReference with null referent

Roger Riggs roger.riggs at oracle.com
Mon Jul 9 21:07:53 UTC 2018


After so many years of accepting null, throwing NPE would an 
incompatible change
and break existing uses.
Documenting it as ill advised or useless is would be a useful caution.

Regards, Roger

On 7/9/18 3:59 PM, Per Liden wrote:
> 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?
> cheers,
> Per

More information about the core-libs-dev mailing list