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

标签 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,...

我想我可以使用可变参数编写类似的东西,但也许有一种方法可以使用 JRE 或现有的库(如 Apache 或 Spring)来实现这一点?

最佳答案

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

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

关于java - 将谓词应用于 Java 中的 getter 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138807/

相关文章:

java - 在java中使用秒表来记录绘图所用的时间

Java容器约束问题

c++ - 多态 lambda 的默认参数

java - 有条件地对 map 条目进行分组 - Java 8

java - 移动后组件不再可调整大小

Java/Maven - 无法找到或加载主类

php - AWS S3 : Image resize using lambda in laravel 5. 3

c# - LINQ .OrderBy由单个字母然后由另一个字母

java - Java 8 方法引用与 'real' 函数指针有何不同?

Java 8 流 : Populating a list of objects instantiated using values in a HashMap