Java lambda表达式在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、
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);
}