I'm using Guava collections' transform functions, and finding myself making a lot of anonymous functions like this pseudocode:
Function<T, R> TransformFunction = new Function<T, R>() {
public R apply(T obj) {
// do what you need to get R out of T
return R;
}
};
...but since I need to reuse some of them, I'd like to put the frequent ones into a class for easy access.
I'm embarrassed to say (since I don't use Java much), I can't figure out how to make a class method return a function like this. Can you?
I think what you want to do is make a public static function that you can re-use throughout your code.
For example:
public static final Function<Integer, Integer> doubleFunction = new Function<Integer, Integer>() {
@Override
public Integer apply(Integer input) {
return input * 2;
}
};
Or if you want to be cool and use lambdas
public static final Function<Integer, Integer> doubleFunction = input -> input * 2;