最近学习了Stream流的一些操作,但在方法引入的操作上出现了一些问题,下面是我问题的详解,麻烦大神们解答一番!
在int数组转换为String数组中,我想引入Integer的toString的静态方法,但是编译报错,我自己定义一个类,仿照Integer的toString方法写的,引入没有问题。如果用Lambda调用Integer的toString的无参方法,也不报错,就是直接调用不行。初学Stream流,不太懂什么原理,求解答,谢谢!
我觉得你现在肯定懂了,但是为了让今后看到这个问题的人了解我稍微解释一下,方法引用既可以调用类的静态方法,也可以调用类的非静态方法(调用类的非静态方法相对而言复杂一点,可以自己去学习了解一下),Integer类既提供了静态方法public static String toString(int i),也提供了非静态方法public String toString(),在使用Integer::toString的时候会产生歧义。如果想要实现int数组转String数组的话可以通过String[] str = Arrays.stream(arr).boxed().map(String::valueOf).toArray(String[]::new);来实现。