Java 8 --- Lambda Expression

-5 java lambda expression java-8

import java.util.function.Function;

public class LambdaExpression {


    @SuppressWarnings("rawtypes")
    public static Function create(int addTo){
        int n = 1;
        Function<Integer, Integer> f = addT -> addTo + n;

        return f;
    }


    public static void main(String[] args){
        System.out.println(LambdaExpression.create(5));
    }
}
Run Code Online (Sandbox Code Playgroud)

在运行时给我这个错误:

LambdaExpression $$ LAMBDA $424058530分之1@ 1c20c684

Jon*_*eet 8

如果要创建一个向其输入添加1的函数,创建该函数的方法不需要参数......但是您需要调用该函数才能执行它.我怀疑你想要:

import java.util.function.Function;

public class LambdaExpression {
    public static Function<Integer, Integer> create() {
        Function<Integer, Integer> f = x -> x + 1;    
        return f;
    }

    public static void main(String[] args) {
        Function<Integer, Integer> f = create();
        System.out.println(f.apply(5)); // 6
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个函数来添加你传递给create方法的任何东西(而不是总是加1)这很容易:

import java.util.function.Function;

public class LambdaExpression {
    public static Function<Integer, Integer> create(int addTo) {
        Function<Integer, Integer> f = x -> x + addTo;
        return f;
    }

    public static void main(String[] args) {
        Function<Integer, Integer> f = create(3);
        System.out.println(f.apply(5)); // 8
    }
}
Run Code Online (Sandbox Code Playgroud)