JDK 9 RFR of JDK-8035452: Fix serial lint warnings in core libs

Joe Darcy joe.darcy at oracle.com
Tue Feb 25 04:22:31 UTC 2014


Hi Paul,

On 02/20/2014 12:49 PM, Paul Benedict wrote:
> Joe, I find it interesting that you suppressed the serial warning on 
> an abstract class. I'd like to know more about that. Is this a 
> universal rule? Are serial uids not important for abstract classes?

I wouldn't generalize that way from this example.

The serial hash of NavigableSubMap has differed in different JDK 
releases, but its subclasses do define serialVersionUID fields. I assume 
the set of non-transient fields in NavigableSubMap has stayed unchanged, 
but I haven't verified that.

If I hadn't found the change in the hash value, I would have added the 
serialVersionUID to NavigableSubMap too.

HTH,

-Joe

>
>
> On Thu, Feb 20, 2014 at 2:33 PM, Joe Darcy <joe.darcy at oracle.com 
> <mailto:joe.darcy at oracle.com>> wrote:
>
>     Hello,
>
>     Please review the patch below which will address the handful of
>     remaining serial lint warning in the core libraries.
>
>     Thanks,
>
>     -Joe
>
>     diff -r e5a09bc70308 src/share/classes/java/util/EnumSet.java
>     --- a/src/share/classes/java/util/EnumSet.java    Thu Feb 20
>     13:03:36 2014 +0000
>     +++ b/src/share/classes/java/util/EnumSet.java    Thu Feb 20
>     12:32:52 2014 -0800
>     @@ -80,6 +80,8 @@
>      public abstract class EnumSet<E extends Enum<E>> extends
>     AbstractSet<E>
>          implements Cloneable, java.io.Serializable
>      {
>     +    private static final long serialVersionUID =
>     1009687484059888093L;
>     +
>          /**
>           * The class of all the elements of this set.
>           */
>     diff -r e5a09bc70308 src/share/classes/java/util/TreeMap.java
>     --- a/src/share/classes/java/util/TreeMap.java    Thu Feb 20
>     13:03:36 2014 +0000
>     +++ b/src/share/classes/java/util/TreeMap.java    Thu Feb 20
>     12:32:52 2014 -0800
>     @@ -1333,6 +1333,7 @@
>          /**
>           * @serial include
>           */
>     +    @SuppressWarnings("serial") // Abstract class
>          abstract static class NavigableSubMap<K,V> extends
>     AbstractMap<K,V>
>              implements NavigableMap<K,V>, java.io.Serializable {
>              /**
>     diff -r e5a09bc70308
>     src/share/classes/sun/reflect/annotation/ExceptionProxy.java
>     --- a/src/share/classes/sun/reflect/annotation/ExceptionProxy.java
>     Thu Feb 20 13:03:36 2014 +0000
>     +++ b/src/share/classes/sun/reflect/annotation/ExceptionProxy.java
>     Thu Feb 20 12:33:21 2014 -0800
>     @@ -37,5 +37,6 @@
>       * @since   1.5
>       */
>      public abstract class ExceptionProxy implements
>     java.io.Serializable {
>     +    private static final long serialVersionUID =
>     7241930048386631401L;
>          protected abstract RuntimeException generateException();
>      }
>
>
>
>
> -- 
> Cheers,
> Paul




More information about the core-libs-dev mailing list