Java 内联谓词 : cannot be resolved to a variable

标签 java predicate

很抱歉问了这个简单的问题 - 我来自 .NET 堆栈。我想要的只是一个内联谓词。请告诉我我做错了什么:

toReturn = Iterables.find(articles, a -> a.toString().equals(input));

它告诉我“a 无法解析为变量”。我假设我只需要导入或者我正在使用旧版本的 Java?提前致谢!

最佳答案

您想要做的事情在 Java 7 或更早版本中是不可能的;但它存在于 Java 8 及更高版本中。对于 Java 7 及更早版本,您可以使用 lambdaj但达到类似的效果。它看起来像这样:

toReturn = Iterables.find(articles, new Predicate<Object>() {
    public boolean apply(Object item) {
            return item.toString().equals(input);
    }
});

您可以查看更多详情here .

编辑: 正如评论中指出的,还有其他选择。当您使用 Iterables 时我猜你会想要一个 com.google.common.base.Predicate其定义非常相似:

toReturn = Iterables.find(articles, new Predicate<Object>() {
    public boolean apply(Object item) {
            return item.toString().equals(input);
    }

    public boolean equals(Object obj) {
        // check whether the other object is also a Predicate
    }
});

关于Java 内联谓词 : cannot be resolved to a variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222697/

相关文章:

java - 保持 Jersey Client API 函数和 REST (Jersey API) Server 函数链接的 "proper"和正确方法是什么?

c++ - 正确排序名称与数字

java - 将 JFrame 打印到整页上

java - 当我们在 socket.accept() 方法之后创建一个新线程时会发生什么?

swift - 使用 PHAssetCollection.fetchAssetCollectionsWithType() 快速从特定相册中获取照片

prolog - 带有变量的 Prolog 查询中 `\+` 的问题

c++ - 为什么我不能用谓词的实例化构造 std::set,但我可以分配以这种方式构造的 std::set?

java - 如何否定方法引用谓词

java - 如何在不使用控制流异常的情况下根据模式验证 XML?

java - 在java中断言两个具有有限属性的实例