【问题标题】:Apply a predicate to a list of getters in Java将谓词应用于 Java 中的 getter 列表
【发布时间】:2019-05-14 21:22:58
【问题描述】:

我想测试一个 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)来做到这一点?

【问题讨论】:

标签: java lambda java-8 predicate


【解决方案1】:

使用流很容易做到这一点:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多