Primitives in Generics (+ the meaning of this)
Rémi Forax
forax at univ-mlv.fr
Fri Jul 16 12:02:15 PDT 2010
And now explain me how you want to introduce function type ?
Rémi
Le 16/07/2010 20:56, Reinier Zwitserloot a écrit :
> In both cases, the way brian puts it, the first call will resolve to
> the same method as this call:
>
> foo(new Runnable() {public void run(){}});
>
> and the second:
>
> Callable<?> c = null;
> foo(c);
>
>
> After all, the 'this' refers to the closures themselves, and the type
> of the closure is determined BEFORE the code in the closure is
> resolved. In both of these cases the (so far hypothetical) SotL
> closure type resolver would trivially resolve these by looking at the
> target types of these variable declarations, which are Runnable and
> Callable<?> respectively.
>
> In an alternate proposal where 'this' refers to outer, then both would
> resolve to whatever this call to foo resolves to:
>
> WhateverTypeTheseClosuresAreIn x = null;
> foo(x);
>
> i.e. 'foo(this)' in a closure would be no different from the same
> thing outside of it.
>
> Or so I understand SotL and the discussed alternative, at any rate.
>
> --Reinier Zwitserloot
>
>
>
> On Fri, Jul 16, 2010 at 7:54 PM, Rémi Forax <forax at univ-mlv.fr
> <mailto:forax at univ-mlv.fr>> wrote:
>
> Le 16/07/2010 19:25, Neal Gafter a écrit :
> > On Fri, Jul 16, 2010 at 10:07 AM, Brian
> Goetz<brian.goetz at oracle.com <mailto:brian.goetz at oracle.com>>wrote:
> >
> >
> >> And, given that inner classes *already* suffer from the accidental
> >> shadowing
> >> problem, creating a mechanism that goes the other way (even if
> the other
> >> way
> >> is absolutely right!) is even more confusing for Java
> developers, who now
> >> have
> >> to keep track of two separate and inconsistent bits of puzzlerhood.
> >>
> >>
> > Brian-
> >
> > I don't believe it would be more confusing for Java developers
> (except those
> > completely unfamiliar with the new language feature). But
> setting that
> > aside, this leads to the natural question: If we're wanting to
> recreate all
> > the problems of anonymous inner classes, what, if any, problems ARE
> > addressed by project lambda, and what is newly possible that was not
> > possible previously?
> >
> > -Neal
> >
>
> Good question. and I haven't no good answer.
>
> Runnable r = { -> foo(this); }
> Callable<?> c = { -> foo(this); }
>
> what is the signature of foo in those cases ?
>
> BTW, there is at least something that inner-class does and lambda
> doesn't.
> You can send argument to the constructor of an inner-class
> and you can't do that with lambda.
>
> Rémi
>
>
More information about the lambda-dev
mailing list