【问题标题】:How to use static imported method with forEach?如何在 forEach 中使用静态导入方法?
【发布时间】:2014-04-15 08:45:44
【问题描述】:

有没有办法使用静态导入的方法作为参数调用Iterable#forEach?我通过输入函数的完全限定名称来实现此功能,而无需导入它:

Arrays.asList(line).forEach(org.junit.Assert::assertNotNull);

另一个变种是:

import org.junit.Assert;
...
Arrays.asList(line).forEach(Assert::assertNotNull);

这样做的原因是,我想在单元测试中对line 中的每个元素进行assertNotNull,但我不喜欢对这些内容使用完全限定的名称。最好只使用:

import static org.junit.Assert.assertNotNull;
...
Arrays.asList(line).forEach(assertNotNull);

【问题讨论】:

  • 您可以使用Consumer<T> assertNotNull = Assert::assertNotNull 并在任何地方重复使用它。

标签: java foreach static-methods java-8 static-import


【解决方案1】:

没有。您必须恢复到经典的 lambda 表示法才能做到这一点:

Arrays.asList(line).forEach(e-> assertNotNull(e));

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 2019-12-10
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2019-08-31
    • 1970-01-01
    相关资源
    最近更新 更多