Class Functions
- java.lang.Object
-
- com.google.common.base.Functions
-
@GwtCompatible public final class Functions extends java.lang.Object
Static utility methods pertaining tocom.google.common.base.Functioninstances; see that class for information about migrating tojava.util.function.All methods return serializable functions as long as they're given serializable parameters.
See the Guava User Guide article on the use of
Function.- Since:
- 2.0
- Author:
- Mike Bostock, Jared Levy
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <A extends @Nullable java.lang.Object,B extends @Nullable java.lang.Object,C extends @Nullable java.lang.Object>
Function<A,C>compose(Function<B,C> g, Function<A,? extends B> f)Returns the composition of two functions.static <E extends @Nullable java.lang.Object>
Function<@Nullable java.lang.Object,E>constant(E value)Returns a function that ignores its input and always returnsvalue.static <K extends @Nullable java.lang.Object,V extends @Nullable java.lang.Object>
Function<K,V>forMap(java.util.Map<K,? extends V> map, V defaultValue)Returns a function which performs a map lookup with a default value.static <K extends @Nullable java.lang.Object,V extends @Nullable java.lang.Object>
Function<K,V>forMap(java.util.Map<K,V> map)Returns a function which performs a map lookup.static <T extends @Nullable java.lang.Object>
Function<T,java.lang.Boolean>forPredicate(Predicate<T> predicate)Creates a function that returns the same boolean output as the given predicate for all inputs.static <F extends @Nullable java.lang.Object,T extends @Nullable java.lang.Object>
Function<F,T>forSupplier(Supplier<T> supplier)Returns a function that ignores its input and returns the result ofsupplier.get().static <E extends @Nullable java.lang.Object>
Function<E,E>identity()Returns the identity function.static Function<java.lang.Object,java.lang.String>toStringFunction()A function equivalent to the method referenceObject::toString, for users not yet using Java 8.
-
-
-
Method Detail
-
toStringFunction
public static Function<java.lang.Object,java.lang.String> toStringFunction()
A function equivalent to the method referenceObject::toString, for users not yet using Java 8. The function simply invokestoStringon its argument and returns the result. It throws aNullPointerExceptionon null input.Warning: The returned function may not be consistent with equals (as documented at
Function.apply(F)). For example, this function yields different results for the two equal instancesImmutableSet.of(1, 2)andImmutableSet.of(2, 1).Warning: as with all function types in this package, avoid depending on the specific
equals,hashCodeortoStringbehavior of the returned function. A future migration tojava.util.functionwill not preserve this behavior.For Java 8 users: use the method reference
Object::toStringinstead. In the future, when this class requires Java 8, this method will be deprecated. SeeFunctionfor more important information about the Java 8 transition.
-
identity
public static <E extends @Nullable java.lang.Object> Function<E,E> identity()
Returns the identity function.Discouraged: Prefer using a lambda like
v -> v, which is shorter and often more readable.
-
forMap
public static <K extends @Nullable java.lang.Object,V extends @Nullable java.lang.Object> Function<K,V> forMap(java.util.Map<K,V> map)
Returns a function which performs a map lookup. The returned function throws anIllegalArgumentExceptionif given a key that does not exist in the map. See alsoforMap(Map, Object), which returns a default value in this case.Note: if
mapis aBiMap(or can be one), you can useMaps.asConverterinstead to get a function that also supports reverse conversion.Java 8 users: if you are okay with
nullbeing returned for an unrecognized key (instead of an exception being thrown), you can use the method referencemap::getinstead.
-
forMap
public static <K extends @Nullable java.lang.Object,V extends @Nullable java.lang.Object> Function<K,V> forMap(java.util.Map<K,? extends V> map, V defaultValue)
Returns a function which performs a map lookup with a default value. The function created by this method returnsdefaultValuefor all inputs that do not belong to the map's key set. See alsoforMap(Map), which throws an exception in this case.Java 8 users: you can just write the lambda expression
k -> map.getOrDefault(k, defaultValue)instead.- Parameters:
map- source map that determines the function behaviordefaultValue- the value to return for inputs that aren't map keys- Returns:
- function that returns
map.get(a)whenais a key, ordefaultValueotherwise
-
compose
public static <A extends @Nullable java.lang.Object,B extends @Nullable java.lang.Object,C extends @Nullable java.lang.Object> Function<A,C> compose(Function<B,C> g, Function<A,? extends B> f)
Returns the composition of two functions. Forf: A->Bandg: B->C, composition is defined as the function h such thath(a) == g(f(a))for eacha.Java 8 users: use
g.compose(f)or (probably clearer)f.andThen(g)instead.- Parameters:
g- the second function to applyf- the first function to apply- Returns:
- the composition of
fandg - See Also:
- function composition
-
forPredicate
public static <T extends @Nullable java.lang.Object> Function<T,java.lang.Boolean> forPredicate(Predicate<T> predicate)
Creates a function that returns the same boolean output as the given predicate for all inputs.The returned function is consistent with equals (as documented at
Function.apply(F)) if and only ifpredicateis itself consistent with equals.Java 8 users: use the method reference
predicate::testinstead.
-
constant
public static <E extends @Nullable java.lang.Object> Function<@Nullable java.lang.Object,E> constant(E value)
Returns a function that ignores its input and always returnsvalue.Java 8 users: use the lambda expression
o -> valueinstead.- Parameters:
value- the constant value for the function to return- Returns:
- a function that always returns
value
-
forSupplier
public static <F extends @Nullable java.lang.Object,T extends @Nullable java.lang.Object> Function<F,T> forSupplier(Supplier<T> supplier)
Returns a function that ignores its input and returns the result ofsupplier.get().Java 8 users: use the lambda expression
o -> supplier.get()instead.- Since:
- 10.0
-
-