Apache Commons logo Commons Functor

Commons Functor: Function Objects for Java

A functor is a function that can be manipulated as an object, or an object representing a single, generic function.

Functors support and encourage a number of powerful programming techniques including:

  • programming in a functional style
  • higher order functions
  • internal iterators
  • reuse and specialization through composition rather than inheritance and overloading
  • generic "callback" or "extension point" APIs
  • generic "filters" or predicate APIs
  • many "behavioral" design patterns, such as Visitor, Strategy, Chain of Responsibility, etc.

See the examples for more information on some of these techniques.


Commons Functor defines three general types of functors:

functors that return a boolean value
functors that return an Object value
functors that don't return anything

The root functor package defines three signatures for each functor type--taking zero, one or two Object arguments.

The remaining packages provide common functor implementations, adapters and utilities.


There are not releases yet.