default methods in super interfaces and serial version id calculation
david.holmes at oracle.com
Thu Jan 24 22:08:13 PST 2013
On 25/01/2013 12:55 PM, Mike Duigou wrote:
> Hopefully nothing that drastic will be required. I think we just need to ensure that default methods only show up in the getDefinedMethods() list for the Child class and don't show up in the getDeclaredMethods() list.
They definitely should not appear in the declared methods!
What is getDefinedMethods()?
> On Jan 24 2013, at 18:08 , Robert Field wrote:
>> Yikes! If we leave default methods in, it will break everybodys serial version id.
>> Mike Duigou<mike.duigou at oracle.com> wrote:
>>> A jdk regression test, java/util/EnumSet/BogusEnumSet, fails when combined with the 8001647 Collections default methods patch.
>>> I investigated the root cause with Stuart Marks' knowledgeable assistance and have come up with a unit test which demonstrates the problem.
>>> The broken bit in BogusEnumSet is that interfaces containing default methods currently cause different default serial version ids to generated in Serializable child classes. The root cause is default methods appearing in the Class.getDeclaredMethods() results.
>>> I have pushed the test to the lambda repo in : http://hg.openjdk.java.net/lambda/lambda/jdk/rev/703ad3145ab2
>>> The actual test is located at: jdk/test/java/io/Serializable/DefaultSVID.java
More information about the lambda-dev