cast at call site problem

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Apr 3 02:53:50 PDT 2013


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.<String>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<String> s) {}
>
>      void bar() {
>          foo(Collections.emptySet());
>      }
> {code}
>
> but this code doesn't:
> {code}
>      void foo(Set<String> s) {}
>
>      void bar() {
>          foo((Set<String>)Collections.emptySet());
>      }
> {code}
>
> Lambda build 83.
>
> Thanks
> Anna
>
>
>
>
>   
>
> !DSPAM:35,51599ede145491173217933!
>
>



More information about the lambda-dev mailing list