带参数的方法引用
在Java 8中,使用以下类
class Person { private boolean born; Person() { } public void setBornTrue() { born = true; } public void setBorn(boolean state) { born = state; } }
可以通过方法引用调用setBornTrue方法:
ArrayList people = new ArrayList(); people.add(new Person()); people.forEach(Person::setBornTrue);
但是我如何使用forEach方法并使用方法引用来使用setBorn? 试:
people.forEach(Person::setBorn);
导致错误,“无法解析方法setBorn”。
另外,我如何传递True的值?
使用lambda:
people.forEach((p) -> p.setBorn(true));
找不到只使用java 8 API的其他方法。
有了这个自定义function:
public static Consumer bind2(BiConsumer super T, U> c, U arg2) { return (arg1) -> c.accept(arg1, arg2); }
你可以做:
people.forEach(bind2(Person::setBorn, true));
如果这种实用程序方法在java API或库中可用,请告诉我们。