Type inference problem with JDK 8 Build 82
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Apr 3 08:07:16 PDT 2013
Another problem with capture conversion in nested method calls - we are
working on it. In the meantime please use explicit type-parameters.
Thanks
Maurizio
On 03/04/13 15:39, Gernot Neppert wrote:
> Hi,
>
> here's some feedback regarding source compatibility of the Java 8 compiler.
> First of all, Kudos to you compiler guys!
> In a codebase of appr. 800 classes that have been used previously with Java
> 7, only one compilation problem showed up when I test-fed the source to
> javac 8 Build 82.
> Considering the heavy changes that have been implemented, I'm impressed
> that compatibility remains that high!
>
> Here's a condensed version of the source that causes the problem:
>
> interface Expression<S,T> {
> <U> Expression<S,? extends U> cast(Class<U> target);
> }
>
> class BatchExpression<S,T> implements Expression<S,T> {
> private BatchExpression(Expression<? super S, ?> first,
> Expression<? super S, T> second) {
> super();
> this.first = first;
> this.second = second;
> }
>
> private final Expression<? super S, ?> first;
> private final Expression<? super S, T> second;
>
> public static <S,T> BatchExpression<S,T> create(Expression<? super S,?>
> first, Expression<? super S, T> second) {
> return new BatchExpression<S, T>(first, second);
> }
>
> @Override
> public <U> Expression<S, ? extends U> cast(Class<U> target) {
> // This is where the compiler chokes:
> return create(first, second.cast(target));
> }
> }
>
More information about the lambda-dev
mailing list