gpt4 book ai didi

java - 如何使用 foreach 中被调用函数的返回值

转载 作者:行者123 更新时间:2023-12-02 01:28:17 25 4
gpt4 key购买 nike

在我的函数 doDecoration 中,我想浏览 pdfAttachments 列表并调用函数 addToPdf。在那里将创建一个新的 pdf,并且这个应该是新的decoratedDataAsByte,以便下一个元素将使用这个新的 pdf 作为输入。目前我不知道如何使用 foreach 函数来做到这一点。

这是我的代码

public byte[] doDecoration(byte[] decoratedDataAsByte, RendererConfiguration config, List<IReadonlyPersistedAttachment> pdfAttachments) {

pdfAttachments.stream()
.forEach(att -> addToPdf(config, att, decoratedDataAsByte));

return decoratedDataAsByte;
}

private byte[] addToPdf(RendererConfiguration config, IReadonlyPersistedAttachment att, byte[] decoratedDataAsByte) {
byte[] addedPdf = decoratedDataAsByte;
if (config.getAddPdfAtBegin().contains(att.getAttName())){
addedPdf = PdfUtils.addPdfAtBegin(decoratedDataAsByte, att.getBinary().getBinaryData());
}
else if (config.getAddPdfAtEnd().contains(att.getAttName())){
addedPdf = PdfUtils.addPdfAtEnd(decoratedDataAsByte, att.getBinary().getBinaryData());
}
else{
addedPdf = PdfUtils.addPdfAtEnd(decoratedDataAsByte, att.getBinary().getBinaryData());
}

return addedPdf;

}

最佳答案

解决问题的最简单方法是不要使用 foreach(),因为 lambda exp 中使用的变量应该是最终的或实际上最终的。

    for (IReadonlyPersistedAttachment pdfAttachment : pdfAttachments) {
decoratedDataAsByte = addToPdf(config, att, decoratedDataAsByte);
}
return decoratedDataAsByte;

您可以通过声明局部有效的最终变量来解决最终变量问题,但我不建议您这样做:

    final byte[][] finalPDFBytes = {decoratedDataAsByte};
pdfAttachments.forEach(att -> finalPDFBytes[0] = addToPdf(config, att, finalPDFBytes[0]));
return finalPDFBytes[0];

关于java - 如何使用 foreach 中被调用函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com