Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38188

Re: Lambda dereference

From Daniele Futtorovic <da.futt.news@laposte.net>
Newsgroups comp.lang.java.programmer
Subject Re: Lambda dereference
Date 2018-03-16 19:32 +0100
Organization A noiseless patient Spider
Message-ID <p8h2lu$773$1@dont-email.me> (permalink)
References <p8h2a1$4f0$1@dont-email.me>

Show all headers | View raw


On 2018-03-16 19:26, Daniele Futtorovic wrote:
> interface Tagged {
>     boolean tag();
> }
> 
> Stream<Tagged> stream = ...;
> 
> You can do this (exhibit A):
>    Predicate<Tagged> p = Tagged::tag;
>    Collection<Tagged> untagged = stream.filter( p.negate()
> ).collect(Collectors.toSet());
> 
> But you can't do this (exhibit B):
>    Collection<Tagged> untagged = stream.filter( (Tagged::tag).negate()
> ).collect(Collectors.toSet());
> 
> Why not? It would be pretty neat. Or am I missing something?
> 

Nevermind, I'm an idiot. I had tried to cast it, and didn't seem to
manage, but must have screwed up somewhere.

This works:
Collection<Tagged> untagged = stream.filter(
((Predicate<Tagged>)Tagged::tag).negate() ).collect(Collectors.toSet());

... and it makes sense why it wouldn't accept it without the casting.

-- 
DF.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Lambda dereference Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-16 19:26 +0100
  Re: Lambda dereference Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-16 19:32 +0100
    Re: Lambda dereference Andreas Leitgeb <avl@logic.at> - 2018-03-16 23:42 +0000
      Re: Lambda dereference Daniele Futtorovic <da.futt.news@laposte.net> - 2018-03-17 03:10 +0100

csiph-web