interface Func<T> {
    T func(int arg);
}
public class Eval<T> {
    void eval(Func<T> f, int[] arr, T[] res) {
        for (int i=0; i<arr.length; i++) {
            res[i] = f.func(arr[i]);
        }
    }
    public static void main(String args[]) {
        int[] a = {1,2,3,4,5};
        Integer[] b = new Integer[5];
        new Eval<Integer>().eval(x->x*x, a, b);
        for (int i=0; i<5; i++) {
            System.out.print(b[i]+",");
}   }   }
