繁体   English   中英

Java 8 流。 将两个参数传递给在 forEach 中调用的方法

[英]Java 8 Streams. Pass Two arguments to a method called in forEach

使用 Java 8 流 API,我想要一种方法来调用接受两个参数的引用方法。 splitFileByMaxRows是应该将Stringint作为其参数的引用方法。 有什么方法可以实现吗?

private void breakLargeFileIntoChunks(final File setlFile, int parentFileId) {
    LOG.info(LOG.isInfoEnabled() ? "*** Breaking Large File Into Chunks ***" : null);

    try (Chunker chunker = new Chunker(); 
         Stream<String> lines = Files.lines(Paths.get(setlFile.getAbsolutePath()))) {
        lines.forEach(chunker::splitFileByMaxRows);
    }
    catch (IOException e) {
        e.printStackTrace();
    }

}

您无法使用方法引用,因为您无法将int参数传递给它。

因此,请改用lambda表达式:

lines.forEach(s -> chunker.splitFileByMaxRows(s,someInt));

MethodReference 只能在允许使用 Consumer 的地方使用。 如果你记得一个消费者只接受一个输入参数。 因此,在您的情况下,您有两个参数,这是不可能作为方法引用传递给消费者的。 因此,您必须使用可以根据需要接受参数的 lambda。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM