Apparent generics compilation bug new to Java 1.7
Benedict Elliott Smith
lists at laerad.com
Thu Feb 23 07:09:23 PST 2012
I'm not using I and I2 interchangeably, I'm just swapping them when
declaring a new binding for the type parameters of (a different) A.
i.e. let's call the class definition A, and the type I am declaring for the
method return value A' ; and its corresponding type parameters K', V', I'
and I2'
All I am saying is that K' ^= V, V' ^= K, I' ^= I2 and I2' ^= I
Now, I2 ^= "?" extends B<V, K> and I ^= "?" extends B<K, V>
(now ignoring the ? extends for brevity...)
Since K' ^= V and V' ^= K; we have I' == I2 == B<K',V'> and I2' == I ==
B<V',K'>
Which looks fine to me. Could you clarify your argument if I'm missing
something?
On 23 February 2012 14:46, Florian Weimer <fweimer at bfk.de> wrote:
> * Benedict Elliott Smith:
>
> > The below class no longer compiles (1.7.02); I can't see any good reason
> > for it not to, and nor can ecj or the 1.6 JDK, so I think it is quite
> > probably a bug.
>
> Why are I and I2 interchangeable?
>
> > public class TypeTest {
> > static abstract class A<K, V, I extends B<K, V>, I2 extends B<V, K>> {
> > abstract A<V, K, I2, I> test();
> > }
> > static class B<K, V> {
> > }
> > }
>
> They have different bounds, so I think you can't swap them.
>
> --
> Florian Weimer <fweimer at bfk.de>
> BFK edv-consulting GmbH http://www.bfk.de/
> Kriegsstraße 100 tel: +49-721-96201-1
> D-76133 Karlsruhe fax: +49-721-96201-99
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20120223/7139a893/attachment.html
More information about the compiler-dev
mailing list