Ambiguity method error when one method can't be applicable

Anna Kozlova Anna.Kozlova at jetbrains.com
Wed Oct 9 04:28:19 PDT 2013


Hi,

It looks like that the change which caused the problem is
http://hg.openjdk.java.net/lambda/lambda/langtools/rev/4a6acc42c3a1. The
test data e.g.
http://hg.openjdk.java.net/lambda/lambda/langtools/file/4a6acc42c3a1/test/to
ols/javac/lambda/TargetType02.java was changed exactly in a way I've
described. 

The change itself is quite complicated and javac specific so I am not sure I
understand how it is connected to the spec. Could you please help?

Thank you
Anna Kozlova
JetBrains
http://www.jetbrains.com
"Develop with pleasure!" 



-----Original Message-----
From: lambda-dev-bounces at openjdk.java.net
[mailto:lambda-dev-bounces at openjdk.java.net] On Behalf Of Anna Kozlova
Sent: Tuesday, October 08, 2013 5:53 PM
To: lambda-dev at openjdk.java.net
Subject: Ambiguity method error when one method can't be applicable

Hi guys,

 

The following code does not compile with ambiguous method error:

 

class MyTest {

 

    interface I1 {

        Foo<Number> m(String s);

    }

 

    interface I2 {

        Foo<Number> m(Integer i);

    }

 

    static class Foo<T extends Number> {

        Foo(T t) {

            System.out.println(t);

        }

    }

 

    private static void m(I1 i) {}

    private static void m(I2 i) {}

 

    public static void main(String[] args) {

        m(Foo::new);

    }

}

 

Some time ago though there was no such an error. 

 

Not sure that I understand why compiler can't resolve such an ambiguity for
me. Could someone explain, please?

 

Thank you
Anna Kozlova
JetBrains
 <http://www.intellij.com/> http://www.jetbrains.com "Develop with
pleasure!" 

 



!DSPAM:35,52542aaf317841350320123!



More information about the lambda-dev mailing list