gpt4 book ai didi

Java 8 提交匿名函数

转载 作者:行者123 更新时间:2023-12-01 10:15:16 26 4
gpt4 key购买 nike

我尝试用 Java 1.8 的新功能来更新我的知识。我经常使用流,但在某些情况下,我不确定是否有新功能可以解决我的问题。

也许有人可以看看下面的工作示例(它是关于旧的 itext):

public static Document createListingPDF(List<PdfPageData> pages, String file)
{
return createListing(PdfWriter.class, pages, file);
}

public static Document createListingRTF(List<PdfPageData> pages, String file)
{
return createListing(RtfWriter2.class, pages, file);
}

private static Document createListing(Object ident, List<PdfPageData> pages, String file)
{
Document document = new Document();
try
{
if(ident == PdfWriter.class)
PdfWriter.getInstance(document, new FileOutputStream(file));
if(ident == RtfWriter2.class)
PdfWriter.getInstance(document, new FileOutputStream(file));
}
catch (Exception e)
{
e.printStackTrace();
}
return document;
}

我使用 Java 8 的目标是向包含“任何”Writer-Class 的“createListing”提交一种 Funktion,并使用方法内的文档执行“getInstance”。

这只是集思广益如何处理它。 :)(我不想将文档的init移到两个调用方法中(考虑重复的代码)

如果您有更多的调用方法,这些方法会通过其类检查来增加 try block ,那么好处将是显而易见的。

希望我的描述足够好,能够以我思考头脑中的棘手问题的方式引导讨论:P

最佳答案

您缺少的不是 Java 8 功能。这是普通的多态性。

使 PdfWriter 和 RtfWriter2 实现相同的 DocumentWriter 接口(interface),并将 DocumentWriter 传递给您的 createListing 方法;类似于以下内容:

public static Document createListingPDF(List<PdfPageData> pages, String file) {
return createListing(new PdfWriter(new FileOutputStream(file)), pages);
}

public static Document createListingRTF(List<PdfPageData> pages, String file) {
return createListing(new RtfWriter2(new FileOutputStream(file)), pages)
}

private static Document createListing(DocumentWriter writer, List<PdfPageData> pages) {
Document document = new Document(pages);
writer.write(document);
return document;
}

关于Java 8 提交匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940158/

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