Primitive streams and optional

Brian Goetz brian.goetz at oracle.com
Wed Nov 21 07:08:23 PST 2012


>> Aside:: are we really allowing Foo::new as a "method" reference for a
>> no-arg constructor? If so I think I'd prefer Foo::Foo.
> 
> Isn't the point of the Factory<> interface to not have to do this?  Or did I dream that?

The two are complementary.  Constructor refs are a language feature, that allow you to get method-ref like functionality for constructors.  Factory<T> (now Supplier<T>) is a functional interface that lets you use lambda/method ref of type () -> T in APIs.  The two work together:

Factory<Foo> fooFactory = Foo::new;

If we didn't have constructor refs, you'd have to write () -> new Foo() instead of Foo::new; if we didn't have Supplier it would be harder to represent "find/make me a T" in APIs.

(Other) David's comment was syntactic, that he thought Foo::Foo was a more obvious syntax for constructor refs than is Foo::new.  




More information about the lambda-libs-spec-observers mailing list