Annotation Type Functional.BindParameters

Enclosing class:
Functional

@Target(METHOD) @Retention(CLASS) public static @interface Functional.BindParameters
Place on non-accessor methods of abstract value type to generate function to which parameters can be bound.
 @Value.Immutable
 @Functional
 public abstract class Xyz {
   @Value.Parameter
   public abstract String getX();
 
   @Functional.BindParameters
   public String computeZ(String y) {
     return getX() + y;
   }
 }
 ...
 // Generated function
 public static Functioninvalid input: '<'Xyz, String> computeZ(String y) {
   return new Functioninvalid input: '<'Xyz, String>() {
     @Override
     public String apply(Xyz input) {
       return input.computeZ(y);
     }
     @Override
     public String toString() {
       return "XyzFunctions.computeZ(y)";
     }
   }
 }
 ...
 // Use as
 Functioninvalid input: '<'Xyz, String> fn = XyzFunctions.computeZ("Y");