当前位置: 首页 > 面试题库 >

带参数的方法引用

陶法
2023-03-14
问题内容

在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的值?


问题答案:

使用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或库中提供了这种实用程序方法,请告诉我们。



 类似资料:
  • 是否有可能将方法引用与参数一起使用?我喜欢流的想法,我只是想让代码更易读。 实际上,我认为有一个类似的问题,方法引用了一个参数,我读了,但不知道如何在我的代码中使用bind2方法。这是唯一的解决办法吗?

  • 我试图模仿下面的行,但它在执行时给出了一个错误,它说: 此处检测到错误的参数匹配器: when(mock.get(anyInt())).thenreturn(null); doThrow(new RuntimeException()).When(mock).SomeVoidMethod(anyObject()); verify(mock).somemethod(contains(“foo”)) 这

  • 我正在通过XML配置和实例工厂方法实例化一些bean: 我实例化我的原型bean编程由BeanFactory.getBean(bean,参数...): 在Spring3中,我想切换到基于java的带注释bean配置。这是我的FactoryBean: 我的问题:如何在这里传递参数?上面的代码将org.springframework.beans.factory.NoSuchBean定义异常:没有类型[

  • 我已经用Java开发了一个应用程序,我正在尝试使用Powermockito创建单元测试(我应该补充一点,我是单元测试新手)。 我有一个名为Resource的类,它有一个名为readResources的静态方法: ResourcesElement也由我编写。在测试中,我想创建自己的资源,所以我希望上面的方法什么都不做。我试着使用以下代码: 单元测试引发异常: org.mockito.exceptio

  • 问题内容: 我已经用Java开发了一个应用程序,并试图使用Powermockito创建单元测试(我应该补充说我是单元测试的新手)。 我有一个名为Resource的类,该类具有一个称为readResources的静态方法: ResourcesElement也由我编码。在测试中,我想创建自己的资源,因此我希望上述方法什么都不做。我尝试使用此代码: 单元测试引发异常: org.mockito.excep

  • 问题内容: 我正在使用gwt uibinder。我想为字段动态设置值。我正在尝试这样的事情 并且该字段设置有这样的值 而且ValueStore有2种方法 问题是我无法调用getValue(key)。我只能调用no-args方法,这意味着以下操作是不可能的 请说明是否有一种方法可以实现,其中我可以调用传递了参数的方法。 问题答案: 不支持该方法,只能调用没有参数的方法。您将不得不直接将其公开为no