IntFunction is a functional interface, it takes an int and returns a reference type.
This reference type can be specified by using generic type specification.
We can implement it in different ways.
Implement using a regular class.
private class IntFuncImpl implements IntFunction<Integer>{
@Override
public Integer apply(final int intValue) { return Integer.valueOf(intValue); }
}
Implement using an anonymous class.
final IntFunction<Integer> anonClass = new IntFunction<Integer>() {
@Override
public Integer apply(final int intValue) { return Integer.valueOf(intValue); }
};
Lambda 1 :-
final IntFunction<Integer> lambdaWithDataType = (int intValue) -> { return Integer.valueOf(intValue); };
Lambda 2 :-
final IntFunction<Integer> lambdaWithoutDataType = (intValue) -> Integer.valueOf(intValue);
Lambda 3 :-
final IntFunction<Integer> lambdaWithMethodReference = Integer::valueOf;
You can watch my youtube video, where I am coding this implementation.
[embed]https://youtu.be/EecMKPlD2qI[/embed]
Full Source Code :-
import java.util.function.IntFunction;
public class IntFunctionImpl{
private class IntFuncImpl implements IntFunction<Integer>{
@Override
public Integer apply(final int intValue) { return Integer.valueOf(intValue); }
}
final IntFunction<Integer> anonClass = new IntFunction<Integer>() {
@Override
public Integer apply(final int intValue) { return Integer.valueOf(intValue); }
};
final IntFunction<Integer> lambdaWithDataType = (int intValue) -> { return Integer.valueOf(intValue); };
final IntFunction<Integer> lambdaWithoutDataType = (intValue) -> Integer.valueOf(intValue);
final IntFunction<Integer> lambdaWithMethodReference = Integer::valueOf;
public static void main(final String... args){
final IntFunctionImpl obj = new IntFunctionImpl();
final IntFuncImpl func = obj.new IntFuncImpl();
Integer val = func.apply(19);
System.out.println(val);
val = obj.anonClass.apply(10);
System.out.println(val);
val = obj.lambdaWithDataType.apply(10);
System.out.println(val);
val = obj.lambdaWithoutDataType.apply(12);
System.out.println(val);
val = obj.lambdaWithMethodReference.apply(23);
System.out.println(val);
}
}