Code Review Request: 7157893: Warnings Cleanup in java.util.*
Kurchi Hazra
kurchi.subhra.hazra at oracle.com
Tue Apr 10 23:15:18 UTC 2012
Hi Stuart,
Please find the updated webrev here:
http://cr.openjdk.java.net/~khazra/7157893/webrev.01/
I hope to have included all the suggestions correctly. Also, note that I
made some new changes in Hashtable.java at lines 185, 355 and 910 to get
rid of some additional warnings.
Thanks,
Kurchi
On 4/6/2012 5:35 PM, Stuart Marks wrote:
> Hi Kurchi, I think we've converged on the code changes. Please prepare
> and post another webrev for a final cross-check before pushing.
>
> What follows is I think merely residual disagreement over the
> philosophy of how to handle generic casts vs reification. :-)
>
> On 4/6/12 3:06 AM, Rémi Forax wrote:
>> On 04/05/2012 11:04 PM, Stuart Marks wrote:
>>> I'm somewhat skeptical of making code changes now based on potential
>>> future
>>> benefits when/if generics become reified. This was discussed before;
>>> see
>>>
>>> http://mail.openjdk.java.net/pipermail/jdk8-dev/2011-December/000454.html
>>>
>>>
>>> In that message, John Rose said "If the best practices have to
>>> change, then
>>> we'll have to change that code again. Or maybe the retrofit strategy
>>> will
>>> have to take account of the existing code idioms. In any case, we'll
>>> cross
>>> that bridge when we get to it. (Coping with reification in this case
>>> is a
>>> decision to make tomorrow, not today.)"
>>
>> I disagree with John. The main issue with generics nowadays is that
>> most of the people doesn't care about a cast to a type variable because
>> everybody knows about erasure. So codes are written with an
>> implementation
>> glitch in mind.
>> Frankly, I don't know if reification will appear (yes it's a kind of
>> magical)
>> or not
>> but I think it's a sloppy path to not consider all casts as equals.
>
> In order to program effectively with generics, I think you have to
> understand erasure and its implications. It may have been an
> unfortunate choice, but erasure is part of the language and we have to
> deal with it and in some cases rely on it. I don't think it's merely
> an "implementation glitch."
>
> The difficulty I have with reification is that while there are
> proposals floating around for how it could be done, nobody really
> knows how it will eventually turn out, nor whether it will actually be
> done. If it is eventually done, there will legal and illegal
> constructs, constructs that generate warnings, and perhaps a style
> guide for how to use reified generics properly.
>
> Right now, we can *imagine* what these future rules might be, but it
> seems untenable to me to try to make today's code conform to those
> imaginary future rules, especially in the absence of tools to help
> support those rules.
>
>> If unmaskNull return a V, the code of equals will upcast the value
>> from Object
>> to V
>> to just after downcast it from V to Object,
>> I think it's better that unmask to return Object and upcast it to V
>> when it's
>> necessary.
>
> Certainly there are cases where there's a redundant downcast and
> upcast. In a reified world, will this be a significant expense?
> Really, I have no idea.
>
> s'marks
--
-Kurchi
More information about the core-libs-dev
mailing list