Java lambda表达式传递lambda表达式中的方法参数

时间:2017-07-07 18:35:35

标签: lambda java-8

我正在尝试在我的代码中使用lambda表达式但是我收到了错误。

public static method getInstance(List<String> a, List<String> b, String c){

    result = (a, b, c) -> createConnection(a, b, c);

}

我收到一个错误,比如a,b,c已经被使用了,其他错误就是它期望java util list但是得到了lambda参数。

1 个答案:

答案 0 :(得分:1)

代码片段报告错误是合理的,因为它只是JLS中lambda表达式的一部分,你在方法和lambda表达式中都有重复的参数名称。

  

如果接收器参数(§8.4.1)出现在lambda表达式的 FormalParameters 中,则为编译时错误。

public static method getInstance(List<String> a, List<String> b, String c){
     // duplicated parameter names   --->     |               |         |
                                    result = (a,              b,        c) ->
                                             createConnection(a, b, c);

}

您应该在labmda表达式或方法签名中重命名参数名称,例如:

public static method getInstance(List<String> a, List<String> b, String c){

    result = (a2, b2, c2) -> createConnection(a2, b2, c2);

}