Functions: Call

org.op4j.functions.Call is a special functions class which allows the execution of a method in the target object.

Here is an example: Imagine your application has a User class which contains a getName() method, returning a String. Let's get the names of all the users in a list:

List<User> users = ...;
List<String> userNames = Op.on(users).map(Call.methodForString("getName")).get();

The methodForX(...) methods in the Call class return the following functions:

MethodReturned function type
methodForBigDecimal(...)Function<Object,BigDecimal>
methodForBigInteger(...)Function<Object,BigInteger>
methodForBoolean(...)Function<Object,Boolean>
methodForByte(...)Function<Object,Byte>
methodForCalendar(...)Function<Object,Calendar>
methodForCharacter(...)Function<Object,Character>
methodForDate(...)Function<Object,Date>
methodForDouble(...)Function<Object,Double>
methodForFloat(...)Function<Object,Float>
methodForInteger(...)Function<Object,Integer>
methodForLong(...)Function<Object,Long>
methodForObject(...)Function<Object,Object>
methodForShort(...)Function<Object,Short>
methodForString(...)Function<Object,String>
methodFor(Type<T>,...)Function<Object,T>
methodForArrayOf(Type<T>,...)Function<Object,T[]>
methodForArrayOfString(...)Function<Object,String[]>
methodForListOf(Type<T>,...)Function<Object,List<T>>
methodForListOfString(...)Function<Object,List<String>>
methodForSetOf(Type<T>,...)Function<Object,Set<T>>
methodForSetOfString(...)Function<Object,Set<String>>

There also exist more convenient abbreviated methods, which are:

MethodReturned function type
bigDecimal(...)Function<Object,BigDecimal>
bigInteger(...)Function<Object,BigInteger>
bool(...)Function<Object,Boolean>
calendar(...)Function<Object,Calendar>
c(...)Function<Object,Character>
date(...)Function<Object,Date>
d(...)Function<Object,Double>
f(...)Function<Object,Float>
i(...)Function<Object,Integer>
l(...)Function<Object,Long>
obj(...)Function<Object,Object>
shr(...)Function<Object,Short>
s(...)Function<Object,String>
obj(Type<T>,...)Function<Object,T>
arrayOf(Type<T>)Function<Object,T[]>
arrayOfString()Function<Object,String[]>
listOf(Type<T>)Function<Object,List<T>>
listOfString()Function<Object,List<String>>
setOf(Type<T>)Function<Object,Set<T>>
setOfString()Function<Object,Set<String>>

Every methodForX(...) or abbreviated method can be passed parameters, and these have to correspond with the parameters of the method being called.

List<User> users = ...;
Group group = ...;
...
List<User> usersInGroup = 
    Op.on(users).removeAllFalse(Call.bool("isInGroup", group).get();