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

Java lambda表达式在lambda表达式中传递方法参数,lambda,java-8,Lambda,Java 8,我试图在代码中使用lambda表达式,但出现了一个错误 public static method getInstance(List<String> a, List<String> b, String c){ result = (a, b, c) -> createConnection(a, b, c); } 公共静态方法getInstance(列表a、列表b、字符串c){ 结果=(a,b,c)->创建连接(a,b,c); } 我得到了一个错误,如a、

我试图在代码中使用lambda表达式,但出现了一个错误

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

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

}
公共静态方法getInstance(列表a、列表b、字符串c){
结果=(a,b,c)->创建连接(a,b,c);
}

我得到了一个错误,如a、b、c已经被使用,其他错误是它需要java util列表,但得到了lambda参数。

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

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

公共静态方法getInstance(列表a、列表b、字符串c){
//重复的参数名称-->|||
结果=(a、b、c)->
创建连接(a、b、c);
}
您应该重命名labmda表达式或方法签名中的参数名称,例如:

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

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

}
公共静态方法getInstance(列表a、列表b、字符串c){
结果=(a2,b2,c2)->创建连接(a2,b2,c2);
}

您想做什么?什么是
方法
?您是否试图返回一个功能接口,该接口可以根据需要使用3个给定参数执行
createConnection()
?如果是这样,
method
应该是某种类型的
Supplier
,您应该执行
return()->createConnection(a、b、c)看起来您对Java语法有一些误解。lambda通常在功能上等同于匿名类的实例。如果它说
result
期望
java.util.List
,那么RHS必须是一个列表,而不是lambda。显示阴影字段错误(a、b和c已被使用)是因为您在lambda中使用的参数(a、b和c)已经存在于
getInstance
方法签名中,如果您想调用
createConnection
并立即使用结果,那么不要使用lambdas——只需调用
createConnection
,如下所示:
result=createConnection(a,b,c)
@rahul如果不提供有意义的Java代码和清晰的解释,就不可能理解您想要实现的目标。这不是lambda表达式的用途。你的问题毫无意义。要想做你想做的事,你只需要
createConnection(a,b,c)
。谷歌搜索“Java lambda教程”。
public static method getInstance(List<String> a, List<String> b, String c){

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

}