在Java 8 Streams中调用动态函数

时间:2015-04-06 12:40:04

标签: java java-8

List<?> temp = empObjList.stream()
                    .filter(nestedDo -> nestedDo.getAttrib1() == "subject")
                    .collect(Collectors.toList());

我在这里调用getAttrib1()方法。但是要调用的方法只能动态识别。我将只获得函数的名称作为String值。我想将它动态转换为函数。我知道我可以使用Reflection来进行动态方法调用,但是我无法通过反射来重写上面的代码。

1 个答案:

答案 0 :(得分:8)

我认为你所寻找的更像是

List<?> temp = empObjList.stream().filter(this::processDo)
                    .collect(Collectors.toList());

其中processDo(nestedDo)是一种方法,可以进行反思,以确定在do上调用哪种方法。