【问题标题】:Java predicate chaining with nested object带有嵌套对象的 Java 谓词链接
【发布时间】:2019-06-22 19:19:42
【问题描述】:
private static final Predicate<Parent> HAS_SON = parent -> IS_CHILD(parent.getChild);
private static final Predicate<Child> IS_CHILD = Objects::nonNull;
private static final Predicate<Parent> IS_PARENT = Objects::nonNull;
private static final Predicate<Parent> IS_FATHER = IS_PARENT.and(HAS_SON);

我正在尝试链接谓词,有一个转折,那就是我想使用子对象的谓词之一。

这是我试图让事情更容易理解的假设情况。

  1. 将致电 is_father (parent)
  2. is_father 将检查 parent 是否不是 null
  3. and() has_son
  4. has_son 将调用 is_child (parent.getChild())
  5. is_child 将检查child 是否为空

HAS_SON 有问题,我知道语法不正确,可能不允许嵌套(parent.child)。有人可以确认吗?现在解决我正在使用的是

private static final Predicate<Parent> HAS_SON = parent -> parent.getChild() != null;

【问题讨论】:

    标签: java java-8 predicate chaining


    【解决方案1】:

    不要忘记Predicate 是通过使用FunctionalInterfacetest 方法触发的。以下将起作用

    private static final Predicate<Child> IS_CHILD = Objects::nonNull;
    private static final Predicate<Parent> HAS_SON = parent -> IS_CHILD.test(parent.getChild);
    private static final Predicate<Parent> IS_PARENT = Objects::nonNull;
    private static final Predicate<Parent> IS_FATHER = IS_PARENT.and(HAS_SON);
    

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 2023-04-01
      • 2018-01-21
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多