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