Part F - Question

Srikanth S Adayapalam srikanth_sankaran at in.ibm.com
Tue Nov 26 00:16:42 PST 2013


Hello !

1. javac 8b116 refuses to compile this program ("reference to goo is 
ambiguous"):
Per my reading, the reference compiler is indeed closely following the 
letter of 
the specification in this test case:

// --
interface I {
        String foo(String [] x, String y);
}
interface J {
        void foo(int x, int y);
}
public class X {
    static void goo(J j) {
        System.out.println("goo(J)");
    }
    static void goo(I i) {
        System.out.println("goo(I)");
    }
    public static void main(String[] args) throws InterruptedException {
                goo((x, y) -> { return x[0] += 1; });
    }
}

But looking at the interfaces involved, I is "obviously" the "right" 
choice and
the call is dismissed as being ambiguous only because the spec says so ?
That is a good enough reason to reject, but just checking.

2. 15.12.2.5 introduces the notation </: - In JLS7 I don't see this symbol 
at
all, nor in the rest of the 335 draft 0.7 (though it is clear what is 
intended)

Thanks in advance for looking into this.
Srikanth.


More information about the lambda-spec-observers mailing list