[enhanced-enums]: Enhanced enums failure with raw types?

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Sep 15 17:10:35 UTC 2017



On 12/09/17 11:34, B. Blaser wrote:
> I agree with you, but this works with a warning (with the latest
> "enhanced enums" version - I've not tried with the JDK 9).
>
> It seems the inference occurs only on the actual argument (E = G) and
> then an unchecked cast is made from "EnumSet<G>" to
> "EnumSet<G<Object>>" when returning a value, producing a warning.
>
> (Or the inverse - I've not verified - inference from the return type
> (E = G<Object>) and unchecked cast from "Class<G>" to
> "Class<G<Object>>" when passing the actual argument)
>
> Is this a bug?
This is a known non-confromance issue - see:

https://bugs.openjdk.java.net/browse/JDK-8026527

In other words, the code passes because javac does an unchecked 
subtyping between G and G<Object> (this check would fail if standard 
subtyping were used, as mandated by the spec).

Maurizio


More information about the amber-dev mailing list