Java 8 language spec flaw/bug

Davin McCall davmac at bluej.org
Fri Aug 22 16:45:49 UTC 2014


> I'm reading through the spec again now to try and see where it's going 
> wrong.

Urgh. The spec is not going wrong at all (at least not for the case of 
generic methods).

I followed the spec closely and discovered that it does in fact appear 
to do the right thing - it resolves the return type of the inner method 
first, and doesn't apply equality constraints to the T parameter of the 
"foo" method. It appears I was seeing a compiler bug which has since 
been fixed, because in Jdk 8u20 the problem no longer manifests. 
Apologies if I've wasted anyone's time.

Using the ternary operator, however, still fails. I don't see why it 
shouldn't behave in exactly the same way as the "ternary" method I 
defined in my example, however. I am somewhat suspicious that perhaps 
the compiler, and not the spec, is again to blame.

Davin



More information about the lambda-dev mailing list