cast at call site problem (original) (raw)

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Apr 3 03:54:52 PDT 2013


On 03/04/13 11:38, Anna Kozlova wrote:

What are reasons behind that then? Cast conversion rules are very complex - and defining an inference process that would satisfy them would make inference a lot more complex. It would also increase the surface of backward incompatibilities.

Maurizio

-----Original Message----- From: lambda-dev-bounces at openjdk.java.net [mailto:lambda-dev-bounces at openjdk.java.net] On Behalf Of Maurizio Cimadamore Sent: Wednesday, April 03, 2013 11:54 AM To: Anna Kozlova Cc: lambda-dev at openjdk.java.net Subject: Re: cast at call site problem On 01/04/13 15:59, Anna Kozlova wrote: The call foo(Collections.emptySet()); is much more clean I suppose. I just wonder why the redundant cast leads to compilation error. As per spec EDR, a cast does not pass its type down to the expression being converted. This means that the call to emptySet is typed with an Object target; hence the error. If you remove the cast, the right target is used. Maurizio Thanks

From: paulus.benedictus at gmail.com [mailto:paulus.benedictus at gmail.com] On Behalf Of Paul Benedict Sent: Monday, April 01, 2013 4:51 PM To: Anna Kozlova Cc: lambda-dev at openjdk.java.net Subject: Re: cast at call site problem I believe you want to write this: foo(Collections.emptySet()); On Mon, Apr 1, 2013 at 9:48 AM, Anna Kozlova <Anna.Kozlova at jetbrains.com> wrote: Hello all, Is it a bug or is it an intentional behavior: This code compiles {code} void foo(Set s) {} void bar() { foo(Collections.emptySet()); } {code} but this code doesn't: {code} void foo(Set s) {} void bar() { foo((Set)Collections.emptySet()); } {code} Lambda build 83. Thanks Anna

!DSPAM:35,515bfca371141724266025!



More information about the lambda-dev mailing list