Sanne Grinovero wrote:
I knew about the requirement to change the UID, but really hadn't
a
clue about the default behaviour:
I thought it was "unspecified" and I really dislike that word.
The default behaviour is semi-specified - specifically, it's based on a
SHA1 hash of:
class name and modifiers
implemented interface names
field names, types and modifiers
(excluding 'private static' and 'private transient' fields)
presence of a static initializer
constructor signatures and modifiers
(excluding private constructors)
method names, signatures and modifiers
(excluding private methods)
The "unspecified" bit creeps in because it's not specified precisely
what synthetic members and classes used to implement language features
like class literals and inner classes should be named, so different
compiler implementations are free to make different choices, giving
different generated UIDs.
Max.