将谓词应用于Java中的getter列表

时间:2019-05-14 21:22:59

标签: java lambda java-8 predicate

我想测试一个bean的所有getter是否都包含文本。

简单的方法就是这样的测试:

boolean result=
     StringUtils.hasText(bean.getProperty1()) && 
     StringUtils.hasText(bean.getProperty2()) &&
     .....

但是我想知道Java 8中是否有一种必须简洁的方式,使我不必重复谓词功能:

   Utility.appplyPredicate(StringUtils:hasText,
          bean.getProperty1(), bean.getProperty2(),...)

或者使用方法引用更好:

   Utility.appplyPredicate(StringUtils:hasText, bean
          Bean:getProperty1, Bean:getProperty2,...

我想我可以使用varargs编写类似的内容,但是也许有一种方法可以使用JRE或现有的库(例如Apache或Spring)来完成它?

1 个答案:

答案 0 :(得分:4)

使用流非常容易:

Stream.of(bean.getProperty1(), bean.getProperty2(), …)
      .allMatch(StringUtils::hasText);