用方法引用替换此lambda

fas*_*ava 11 java java-8 java-stream sonarqube

我有以下代码.Sonar抱怨用方法参考替换这个lambda.

Stream.iterate(0, i -> i + 1).limit(100).map(i -> Integer.toString(i));
Run Code Online (Sandbox Code Playgroud)

如果我用下面的代码替换它,它不会编译与编译错误:类型不匹配:无法转换Stream<Object><unknown>.

Stream.iterate(0, i -> i + 1).limit(100).map(Integer::toString);
Run Code Online (Sandbox Code Playgroud)

如何Integer::toString转换Stream<Object><unknown>

shm*_*sel 8

这是不明确的,因为静态非静态 toString()方法都与功能签名兼容Integer -> String.你可以String::valueOf改用.


vla*_*324 5

你不能把Integer::toString因为Integer有两个适合功能接口的实现Function<Integer, String>,但你可以使用String::valueOf:

Stream.iterate(0, i -> i + 1)
        .limit(100)
        .map(String::valueOf)
        .collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)