Java 8 Streams中带有谓词对象的动态函数调用



这是我的父类

class Parent
{
String attrib1;
String attrib2;
String attrib3;
// getters and setters of three fields

然后我创建了一个列表

List<Parent> objList = new ArrayList<Parent>();

然后我向objList添加了一些Parent对象。

现在我想根据类中字段的值来过滤这些对象。但我将只动态地获取字段名。我想为此使用流。

List<Parent> temp = objList.stream()
                .filter(nestedDo -> nestedDo.getAttrib2() == "manu")
                .collect(Collectors.toList());

此处getAttrib2()有所不同。它可以是getAttrib1()或getAttrib3()。

所以我需要动态函数调用。我们能用谓词实现吗。不幸的是,我对谓词对象一无所知。请用里面的所有概念仔细解释你的答案。

是的,您可以创建不同的谓词并根据条件使用它们。

Predicate<Parent>  first= e -> e.getAttrib1().equals("nanu"); 
Predicate<Parent>  second= e -> e.getAttrib2().equals(".."); 
List<Parent> temp = objList.stream()
            .filter(first)   // Similarly you can call second
            .collect(Collectors.toList());