JLS 15.13方法引用表达式的lists examples。其中之一就是
(test ? list.replaceAll(String::trim) : list) :: iterator
这没有任何意义,因为replaceAll是void。是我误解了什么,还是这是JLS中的一个错误(可能是早期版本的replaceAll返回了结果列表)?
发布于 2015-05-09 10:50:44
从技术上讲,在JLS中并没有指定list变量具有java.util.List类型。因此,可以使用一些自定义类型编译此代码:
public static class MyList implements Iterable<String> {
private final List<String> list = new ArrayList<>();
public MyList add(String val) {
list.add(val);
return this;
}
public MyList replaceAll(UnaryOperator<String> op) {
list.replaceAll(op);
return this;
}
public Iterator<String> iterator() {
return list.iterator();
}
}
public Supplier<Iterator<String>> it(MyList list, boolean test) {
return (test ? list.replaceAll(String::trim) : list) :: iterator;
}但总的来说,看起来他们打算做一个基于java.util.List的例子。因此,最好将其替换为基于JDK的代码。
https://stackoverflow.com/questions/30132646
复制相似问题