我对Java中的lambdas很新。
我已经开始使用它,因为我发现它们非常有趣 但我仍然不知道如何完全使用它们
我有一个uuids列表,对于每个uuid,我想调用一个带有两个参数的函数:first是一个字符串,第二个是uuid
我为每个uuid传递一个常量字符串
我写了以下代码,但它无效
uuids.stream()
.map(uuid -> {"string",uuid})
.forEach(AService::Amethod);
是另一类AService
的方法public void Amethod(String a, UUID b) {
System.out.println(a+b.toString());
}
答案 0 :(得分:3)
lambda表达式只有一个返回值,因此{"string",uuid}
不起作用。
您可以使用.map(uuid -> new Object[]{"string",uuid})
返回一个数组,但AService::Amethod
方法引用不会接受该数组。
在您的示例中,您可以跳过map
步骤:
uuids.stream()
.forEach(uuid -> aservice.Amethod("string",uuid));
其中aservice
是您希望执行AService
方法的Amethod
类的实例。
答案 1 :(得分:1)
uuids.stream().forEach(uuid -> AService.Amethod("string", uuid));
你可以在给定Pair
类的情况下编写更接近当前代码的内容,但1)最终会得到更复杂的代码; 2)Java标准库没有一个内置的。由于2),有很多实用程序库定义了一个。例如。使用https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/tuple/Pair.html,它将是
uuids.stream()
.map(uuid -> Pair.of("string",uuid))
.forEach(pair -> AService.Amethod(pair.getLeft(), pair.getRight()));