I.super.f() usage in Java 8
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Thu Sep 11 17:16:16 UTC 2014
Hi John,
yes - this appears to be a bug; I filed this as:
https://bugs.openjdk.java.net/browse/JDK-8058244
Thanks
Maurizio
On 11/09/14 16:53, John Spicer wrote:
> Java 8 supports a new user of super:
>
> interface I {
> default int f(){return 0;}
> }
>
> class X implements I {
> public int f() {
> return I.super.f();
> }
> }
>
> This is described in 15.12.1.
>
> However, there is wording in 15.12.1 that says: Let T be the type declaration immediately enclosing the method invocation. It is a compile-time error if Iis not a direct superinterface of T, or if there exists some other direct superclass or direct superinterface of T, J, such that J is a subtype of I.
>
> That would seem to require an error on this case, because T has a superclass of J, which is a subtype of I.
>
> interface I {
> default int f(){return 0;}
> }
> class J implements I { }
> class T extends J implements I {
> public int f() {
> return I.super.f();
> }
> }
More information about the compiler-dev
mailing list