akka.japi.pf.FI Maven / Gradle / Ivy
/**
* Copyright (C) 2009-2014 Typesafe Inc.
*/
package akka.japi.pf;
/**
* Class that encapsulates all the Functional Interfaces
* used for creating partial functions.
*
* This is an EXPERIMENTAL feature and is subject to change until it has received more real world testing.
*/
public final class FI {
private FI() {
}
/**
* Functional interface for an application.
*
* @param the input type, that this Apply will be applied to
* @param the return type, that the results of the application will have
*/
public static interface Apply {
/**
* The application to perform.
*
* @param i an instance that the application is performed on
* @return the result of the application
*/
public R apply(I i) throws Exception;
}
/**
* Functional interface for an application.
*
* @param the first input type, that this Apply will be applied to
* @param the second input type, that this Apply will be applied to
* @param the return type, that the results of the application will have
*/
public static interface Apply2 {
/**
* The application to perform.
*
* @param i1 an instance that the application is performed on
* @param i2 an instance that the application is performed on
* @return the result of the application
*/
public R apply(I1 i1, I2 i2) throws Exception;
}
/**
* Functional interface for a predicate.
*
* @param the type that the predicate will operate on.
*/
public static interface TypedPredicate {
/**
* The predicate to evaluate.
*
* @param t an instance that the predicate is evaluated on.
* @return the result of the predicate
*/
public boolean defined(T t);
}
/**
* Functional interface for a predicate.
*
* @param the type that the predicate will operate on.
* @param the type that the predicate will operate on.
*/
public static interface TypedPredicate2 {
/**
* The predicate to evaluate.
*
* @param t an instance that the predicate is evaluated on.
* @param u an instance that the predicate is evaluated on.
* @return the result of the predicate
*/
public boolean defined(T t, U u);
}
/**
* Functional interface for an application.
*
* @param the input type, that this Apply will be applied to
*/
public static interface UnitApply {
/**
* The application to perform.
*
* @param i an instance that the application is performed on
*/
public void apply(I i) throws Exception;
}
/**
* Functional interface for an application.
*
* @param the first input type, that this Apply will be applied to
* @param the second input type, that this Apply will be applied to
*/
public static interface UnitApply2 {
/**
* The application to perform.
*
* @param i1 an instance that the application is performed on
* @param i2 an instance that the application is performed on
*/
public void apply(I1 i1, I2 i2) throws Exception;
}
/**
* Functional interface for an application.
*
* @param the first input type, that this Apply will be applied to
* @param the second input type, that this Apply will be applied to
* @param the third input type, that this Apply will be applied to
*/
public static interface UnitApply3 {
/**
* The application to perform.
*
* @param i1 an instance that the application is performed on
* @param i2 an instance that the application is performed on
* @param i3 an instance that the application is performed on
*/
public void apply(I1 i1, I2 i2, I3 i3) throws Exception;
}
/**
* Functional interface for an application.
*/
public static interface UnitApplyVoid {
/**
* The application to perform.
*/
public void apply() throws Exception;
}
/**
* Package scoped functional interface for a predicate. Used internally to match against arbitrary types.
*/
static interface Predicate {
/**
* The predicate to evaluate.
*
* @param o an instance that the predicate is evaluated on.
* @return the result of the predicate
*/
public boolean defined(Object o);
}
}