首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JLS中的方法引用示例

JLS中的方法引用示例
EN

Stack Overflow用户
提问于 2015-05-09 04:50:37
回答 1查看 133关注 0票数 6

JLS 15.13方法引用表达式的lists examples。其中之一就是

(test ? list.replaceAll(String::trim) : list) :: iterator

这没有任何意义,因为replaceAllvoid。是我误解了什么,还是这是JLS中的一个错误(可能是早期版本的replaceAll返回了结果列表)?

EN

回答 1

Stack Overflow用户

发布于 2015-05-09 10:50:44

从技术上讲,在JLS中并没有指定list变量具有java.util.List类型。因此,可以使用一些自定义类型编译此代码:

代码语言:javascript
复制
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的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30132646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档