7092897: sun.security.util.Cache should be generified

Sean Mullan sean.mullan at oracle.com
Tue Oct 18 13:12:30 UTC 2011


On 10/17/11 11:07 PM, Xuelei Fan wrote:
> I only have a few very minor suggestions.
> 
> in sun/security/util/Cache.java:
> -> 264  this.queue = soft ? new ReferenceQueue<V>() : null;
>                                             ^
> I would like to remove the generic "V" in the right side of the assignment:
> 264  this.queue = soft ? new ReferenceQueue<>() : null;

I tried that, but I get a compiler error:

../../../../src/share/classes/sun/security/util/Cache.java:264: error:
incompatible types
        this.queue = soft ? new ReferenceQueue<>() : null;
                          ^
  required: ReferenceQueue<V>
  found:    ReferenceQueue<Object>
  where V is a type-variable:
    V extends Object declared in class MemoryCache
1 error

I think it may be a bug in the compiler though, because if I break out the code
like this:

        if (soft)
            this.queue = new ReferenceQueue<>();
        else
            this.queue = null;

I don't get an error. I'll look into filing a compiler bug on this, but in the
meantime, I'll change the code to the above.

> -> 255     private final ReferenceQueue<V> queue;
>                                         ^
> From my first look at the update, I think the real generic type should
> be "CacheEntry<K,V>", instead of "V". However, because SoftCacheEntry
> class need to extend SoftReference<V>, we have to use a dummy type "V"
> here. I was wondering we may want to add a line or two comments here.

Good point. I will add some comments.

Thanks,
Sean

> 
> 
> Otherwise, looks fine to me.
> 
> Xuelei
> 
> On 10/18/2011 2:51 AM, Sean Mullan wrote:
>> Hi Xuelei,
>>
>> Would you be able to review this fix?
>>
>> http://cr.openjdk.java.net/~mullan/webrevs/7092897/webrev.00/
>>
>> Thanks,
>> Sean
> 



More information about the security-dev mailing list