Class BiFunctionStringLookup<P,R>

java.lang.Object
org.apache.commons.text.lookup.BiFunctionStringLookup<P,R>
Type Parameters:
R - A function's return type
P - A function's second input type
All Implemented Interfaces:
BiStringLookup<P>, StringLookup

final class BiFunctionStringLookup<P,R> extends Object implements BiStringLookup<P>
A function-based lookup where the request for a lookup is answered by applying that function with a key.
Since:
1.9
  • Field Details

  • Constructor Details

    • BiFunctionStringLookup

      private BiFunctionStringLookup(BiFunction<String,P,R> biFunction)
      Creates a new instance backed by a Function.
      Parameters:
      biFunction - the function, may be null.
  • Method Details

    • on

      static <U, T> BiFunctionStringLookup<U,T> on(BiFunction<String,U,T> biFunction)
      Creates a new instance backed by a Function.
      Type Parameters:
      T - the function's input type
      Parameters:
      biFunction - the function, may be null.
      Returns:
      a new instance backed by the given function.
    • on

      static <U, T> BiFunctionStringLookup<U,T> on(Map<String,T> map)
      Creates a new instance backed by a Map. Used by the default lookup.
      Type Parameters:
      T - the map's value type.
      Parameters:
      map - the map of keys to values, may be null.
      Returns:
      a new instance backed by the given map.
    • lookup

      public String lookup(String key)
      Description copied from interface: StringLookup
      Looks up a String key to provide a String value.

      The internal implementation may use any mechanism to return the value. The simplest implementation is to use a Map. However, virtually any implementation is possible.

      For example, it would be possible to implement a lookup that used the key as a primary key, and looked up the value on demand from the database Or, a numeric based implementation could be created that treats the key as an integer, increments the value and return the result as a string - converting 1 to 2, 15 to 16 etc.

      This method always returns a String, regardless of the underlying data, by converting it as necessary. For example:

       Map<String, Object> map = new HashMap<String, Object>();
       map.put("number", new Integer(2));
       assertEquals("2", StringLookupFactory.mapStringLookup(map).lookup("number"));
       
      Specified by:
      lookup in interface StringLookup
      Parameters:
      key - the key to look up, may be null.
      Returns:
      The matching value, null if no match.
    • lookup

      public String lookup(String key, P object)
      Looks up a String key by applying the function.

      If the function is null, then null is returned. The function result object is converted to a string using toString().

      Specified by:
      lookup in interface BiStringLookup<P>
      Parameters:
      key - the key to be looked up, may be null.
      object - ignored by default.
      Returns:
      The function result as a string, may be null.
    • toString

      public String toString()
      Overrides:
      toString in class Object