On Tue, 2011-10-18 at 12:27 +0100, Tom Hawtin wrote: > On 18/10/2011 11:15, Steve Poole wrote: > > On Tue, 2011-10-18 at 15:53 +0800, Sean Chou wrote: > > > > Hi Sean, I wonder if the inclusion of AIX in the enum is at the wrong > > point? You've added it before UNKNOWN which makes logical sense - but > > you have changed UNKNOWN's ordinal value so if the enum is > > serialised/deserialised then you could in theory break something > > relying on UNKNOWN being the 4th entry > > > > Its a small point and unlikely to happen I expect but I thought I'd > > point it out. > > It does change the ordinal but it's not a technically binary > compatibility change as defined by the JLS (3rd Ed. 13.4.26). The > behavioural change by insertion is less significant as the results from > compareTo select the same sort order. > > http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.4.26 > > "13.4.26 Evolution of Enums > > "Adding or reordering constants from an enum type will not break > compatibility with pre-existing binaries. > If a precompiled binary attempts to access an enum constant that no > longer exists, the client will fail at runtime with a NoSuchFieldError. > Therefore such a change is not recommended for widely distributed enums. > > "In all other respects, the binary compatibility rules for enums are > identical to those for classes." > > > Java Serialisation serialises enums by name rather than just ordinal. > Thanks for the clarification Tom.
> Tom >
