Search code examples
javaguavageneric-collections

Java method that returns a function?


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?


Solution

  • 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;