On Wed, Oct 16, 2019 at 3:56 PM Joe Darcy <joe.da...@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