Capture of variables in lambda in Java

Function<Integer, Integer> MakeWallet(Integer[] sum) {
    return pay -> sum[0] -= pay;
}

Function<Integer, Integer> payFromWallet1 = 
MakeWallet(new Integer[] {1000});
Function<Integer, Integer> payFromWallet2 = 
MakeWallet(new Integer[] {500});
int balance = payFromWallet1.apply(50);
//balans is 950

balance = payFromWallet2.apply(70);
//balance is 430

balance = payFromWallet1.apply(150);
//balans is 800