Lambda Lambda

Scott Palmer swpalmer at gmail.com
Thu Mar 20 20:03:59 UTC 2014


So why doesn't this complain:
n.managedProperty().<ChangeListener>addListener(x -> test(x));

"ChangeListener" has no business being there.

Scott

On Thu, Mar 20, 2014 at 4:02 PM, Scott Palmer <swpalmer at gmail.com> wrote:
> Thanks.. just figured that out myself.
> As my colleague just said to me "the world is good again"
>
> On Thu, Mar 20, 2014 at 4:00 PM, Richard Bair <richard.bair at oracle.com> wrote:
>> InvalidationListener has one param, ChangeListener has 3. So the arity of the lambda tells the compiler which kind to produce. If there was ambiguity, the compiler would complain.
>>
>> Richard
>>
>> On Mar 20, 2014, at 12:54 PM, Scott Palmer <swpalmer at gmail.com> wrote:
>>
>>> So I'm looking at Java 8 stuff now and I see that addListener has
>>> methods.  One takes a ChangeListener, the other an
>>> InvalidationListener.
>>>
>>> So what does this do:
>>>
>>> Node n = getSomeNode();
>>> n.managedProperty().addListener(x -> test(x));
>>>
>>> Well it seems it adds an InvalidationListener.
>>>
>>> So I tried this:
>>>
>>> n.managedProperty().<ChangeListener>addListener(x -> test(x));
>>>
>>> which seems to be accepted syntax, but it still adds an InvalidationListener !!!
>>>
>>> Help Please.
>>>
>>> Why didn't JavaFX 8 add two new methods:
>>> addChangeListener
>>> addInvalidationListener
>>>
>>> ?
>>>
>>> Scott
>>


More information about the openjfx-dev mailing list