Relates :
|
|
Relates :
|
|
Relates :
|
FULL PRODUCT VERSION : java version "1.8.0_51" Java(TM) SE Runtime Environment (build 1.8.0_51-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode) A DESCRIPTION OF THE PROBLEM : Attached example compiles with source 1.7, but not with source 1.8. I don't know if it is legal according to JLS 1.7 or JLS 1.8. It seems however, that it should be. Code compiles when wildcard Interval<?> interval = (Interval<?>) object; is replaced by raw Interval interval = (Interval) object; I'm aware that isValid could and should be instance method, Validator could be generic class and so on - but let's ignore that. REGRESSION. Last worked in version 8u51 ERROR MESSAGES/STACK TRACES THAT OCCUR : IntervalValidator.java:8: error: method isValid in class Interval<C#2> cannot be applied to given types; if (!Interval.isValid(interval)) { ^ required: Interval<C#1> found: Interval<CAP#1> reason: inference variable C#1 has incompatible bounds equality constraints: CAP#1 upper bounds: Comparable<? super C#1> where C#1,C#2 are type-variables: C#1 extends Comparable<? super C#1> declared in method <C#1>isValid(Interval<C#1>) C#2 extends Comparable<? super C#2> declared in class Interval where CAP#1 is a fresh type-variable: CAP#1 extends Comparable<? super CAP#1> from capture of ? REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- // Interval.java public class Interval<C extends Comparable<? super C>> { public C lower; public C upper; public static <C extends Comparable<? super C>> boolean isValid(Interval<C> interval) { return interval.lower.compareTo(interval.upper) <= 0; } } // IntervalValidator.java public class IntervalValidator implements Validator { @Override public void validate(Object object) { if (object instanceof Interval) { Interval<?> interval = (Interval<?>) object; if (!Interval.isValid(interval)) { throw new RuntimeException(); } } } } // Validator.java public interface Validator { void validate(Object object); } ---------- END SOURCE ----------
|