Bikeshed: what do we call the distinguished method of a SAM?

Sam Pullara spullara at gmail.com
Tue Jul 2 13:31:14 PDT 2013


Looks good to me.

Sam

On Jul 2, 2013, at 12:55 PM, Brian Goetz <brian.goetz at oracle.com> wrote:

> How about:
> 
>     * <p>This is a <a href="package-summary.html">functional interface</a>
>     * whose functional abstract method is {@link #apply(Object)}.
> 
> where this is defined in package info:
> 
> * <em>Functional interfaces</em> provide target types for lambda expressions
> * and method references.  Each functional interface has a single abstract method,
> * called the <em>functional abstract method</em> for that functional interface,
> * to which the lambda expression's parameter and return types are matched or
> * adapted.  Functional interfaces can provide a target type in multiple contexts,
> * such as assignment context, method invocation, or cast context:
> 
> 
> On 7/2/2013 3:44 PM, Brian Goetz wrote:
>> Working on the spec for the SAMs.  In consultation with Doug, converging
>> on a style that casts a SAM as *representing* an abstract entity such as
>> a function or operation, and treating the SAM *as if* it were that
>> function.  For example:
>> 
>> /**
>>  * Represents a function that accepts one argument and produces a result.
>>  *
>>  * @param <T> the type of the input to the function
>>  * @param <R> the type of the result of the function
>>  *
>>  * @since 1.8
>>  */
>> @FunctionalInterface
>> public interface Function<T, R> {
>> 
>>     /**
>>      * Applies this function to an argument.
>>      *
>>      * @param t the function argument
>>      * @return the function result
>>      */
>>     R apply(T t);
>> 
>> I think one thing that is missing is tying together the sole SAM method
>> with the SAM class.  This is obvious in a SAM with no default or static
>> methods (and no methods from Object), but starts to get lost in the
>> noise as the method count adds up.
>> 
>> I'm thinking of something like:
>> 
>>  * This is a <a href="...">functional interface</a> whose _____ method
>> is {@link #apply}.
>> 
>> For some value of ____.  What do we call the primary SAM method?  The
>> implementation method?  The primary SAM method?  The abstract method?
>> 



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