JDK 14 RFR of JDK-8232230: Suppress warnings on non-serializable non-transient instance fields in java.util.concurrent

Martin Buchholz martinrb at google.com
Thu Oct 17 01:11:23 UTC 2019


On Wed, Oct 16, 2019 at 3:56 PM Joe Darcy <joe.darcy at oracle.com> wrote:

>
> FWIW, this code compiles in javac
>
>      public interface SerializableCondition extends Condition,
> Serializable {
>          public static <C extends Condition & Serializable>
>                                   SerializableCondition transform(C
> condition) {
>              return condition;
>          }
>      }
>
> and objects of existing types like
> AbstractQueuedLongSynchronizer.ConditionObject seem to get "converted"
> as desired.
>
>
I actually tried this ...
---
import java.io.Serializable;
import java.util.concurrent.locks.Condition;

public interface SerializableCondition
    extends Condition, Serializable {
    public static <C extends Condition & Serializable>
      SerializableCondition transform(C condition) {
        return condition;
    }
}
---
... and got:

==> javac -source 14 -Xlint:all SerializableCondition.java
SerializableCondition.java:8: error: incompatible types: C cannot be
converted to SerializableCondition
        return condition;
               ^
  where C is a type-variable:
    C extends Condition,Serializable declared in method <C>transform(C)
1 error


More information about the core-libs-dev mailing list