WeakReference with null referent
mandy chung
mandy.chung at oracle.com
Mon Jul 9 22:18:10 UTC 2018
On 7/9/18 12: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?
I don't expect any one wants to create a reference with null referent
Throwing NPE would be one way to catch if a reference object is created
with null referent. I think the compatibility risk is low.
I agree that Reference::clear is equally useless. Are you thinking
something should be done with Reference::clear?
Mandy
More information about the core-libs-dev
mailing list