package org.arpit.java2blog;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

public class StaticMethodReferenceMain {

	public static void main(String args[])
	{
		
		List<Integer> list=Arrays.asList(new Integer[] {1,2,3,4,5});
		
		// using anonymous class
		Function<Integer,Integer> function1=new Function<Integer, Integer>() {

			@Override
			public Integer apply(Integer num) {
				return PowerFunctions.power(num);
			}
		};
		
		List<Integer> calculatePowForList1 = PowerFunctions.calculatePowOf2ForList(list, function1); 
		System.out.println(calculatePowForList1);

		// Using lambda expression
		Function<Integer,Integer> function2 = (num) -> PowerFunctions.power(num);
		
		List<Integer> calculatePowForList2 = PowerFunctions.calculatePowOf2ForList(list, function2); 
		System.out.println(calculatePowForList2);
		
		// Using Method reference
		Function<Integer,Integer> function3 = PowerFunctions::power;
			
		List<Integer> calculatePowForList3 = PowerFunctions.calculatePowOf2ForList(list, function3); 
		System.out.println(calculatePowForList3);
		
	}
}