带参数的方法引用

2022-09-02 10:08:17

在 Java 8 中,使用以下类

 class Person {

    private boolean born;

    Person() {
    }

    public void setBornTrue() {
        born = true;
    }

    public void setBorn(boolean state) {
        born = state;
    }

  }

可以通过方法引用调用 setBornTrue 方法:

    ArrayList<Person> people = new ArrayList<>();
    people.add(new Person());

    people.forEach(Person::setBornTrue);

但是我如何使用 forEach 方法,并通过方法引用使用 setBorn?正在尝试:

    people.forEach(Person::setBorn);

导致错误“无法解析方法 setBorn”。

此外,我将如何传入 True 的值?


答案 1

使用 lambda:

people.forEach((p) -> p.setBorn(true));

没有找到其他方法,只使用java 8 API。


使用此自定义函数:

public static <T, U> Consumer<T> bind2(BiConsumer<? super T, U> c, U arg2) {
    return (arg1) -> c.accept(arg1, arg2);
}

您可以执行以下操作:

people.forEach(bind2(Person::setBorn, true));

如果这种实用程序方法在java API或库中可用,请告诉我们。


答案 2

推荐