JDK 8 Warnings Cleanup Day -- Dec. 1st, 2011
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Nov 30 09:07:43 PST 2011
On 30/11/11 17:00, Rémi Forax wrote:
> On 11/30/2011 05:45 PM, Maurizio Cimadamore wrote:
>> On 30/11/11 16:33, Martijn Verburg wrote:
>>> Hi John,
>>>
>>>> Martijn,
>>>>
>>>> It is great to see this sort of enthusiasm.
>>>>
>>>> As a reviewer for similar efforts in the past, I note that it can
>>>> help to
>>>> group changes by the amount of analysis needed for each change. For
>>>> example,
>>>> changes to remove redundant casts are pretty easy to do, and to
>>>> review, but
>>>> other changes might need more analysis, especially anything
>>>> involving method
>>>> signatures.
>>> Thanks! We'll do just that - any other suggestions on how people want
>>> to receive patches/effort/results please let us know. We really don't
>>> want to add unnecessary burden.
>> Martijn,
>> as many of the warnings out there are indeed related to generics, we
>> need to make sure that, when fixing such warnings, we don't end up
>> changing signatures of public API (i.e. by adding/removing
>> generics/wildcards), as these changes are potentially harmful for JDK
>> consumers. I think it would be best to focus on low-hanging fruits
>> first - these are:
>>
>> *) changes that involve the body of a method (i.e. changes to the
>> declared type of a local variable)
>>
>> *) Adding @SuppressWarnings is always safe (retention policy of this
>> annotation is sourcefile, so that classfile won't be affected)
>
> It's a binary compatible change but it's not safe.
I was trying to sketch a list of things that can be done without
worrying about public API-ness - in that sense adding a
@SuppressWarnings does no harm
>
>>
>> *) changing initializer (even of public fields) is always safe - as
>> the initializer is part of the constructor - therefore it's part of
>> the implementation
>
> static fields initialized with a constant primitive values or strings
> are not part of the constructor.
uhmm - which generic warnings can be issued in a static final field
whose initializer is a primitive value/String?
Maurizio
>
>>
>> I think those rules are quite useful in distinguishing safe changes
>> from potentially harmful changes. I would also refrain from relying
>> on modifiers to establish whether a method is public or private API -
>> remember that a package-private method can be overriden in a subclass
>> and given a public modifier!
>>
>> Maurizio
>
> cheers,
> Rémi
>
More information about the jdk8-dev
mailing list