繁体   English   中英

Java Android中的C#OfType

[英]C# OfType in Java Android

我正在使用iText 5G编写应用程序,我看到一段代码不允许在表末尾拆分表,但是该代码是用C#编写的,我几乎将所有代码都转换为Java,但是卡在一行中,我不知道Java中的等效语言。

C#代码:

public override IList<iTextSharp.text.IElement> End(iTextSharp.tool.xml.IWorkerContext ctx, iTextSharp.tool.xml.Tag tag, IList<iTextSharp.text.IElement> currentContent)
{
    string keeprowstogetherattr = "keeprowstogether";
    var retval = base.End(ctx, tag, currentContent);
    if (tag.Attributes.ContainsKey(keeprowstogetherattr) && tag.Attributes[keeprowstogetherattr] == "true")
    {
        foreach (PdfPTable table in retval.OfType<PdfPTable>())
        {
            table.KeepRowsTogether(0);
        }
    }
    return retval;
}

目前我的Java代码:

public List<Element> End(WorkerContext ctx, Tag tag, List<Element> currentContent)
{
    {
        String keeprowstogetherattr = "keeprowstogether";
        List<Element> retval = super.end(ctx, tag, currentContent);
        if (tag.getAttributes().containsKey(keeprowstogetherattr) && tag.getAttributes().get(keeprowstogetherattr) == "true");
        {
            for (PdfPTable table : retval.OfType<PdfPTable>())
            {
                table.keepRowsTogether(0);
            }
        }
        return retval;
    }
}

我遇到的问题:

PdfPTable table : retval.OfType<PdfPTable>()

我不知道Java中C#的OfType的等效性。 谢谢。

编辑:我的min API是19,所以stream()不起作用。

如果您不能使用流过滤器,则最简单的方法可能是在for循环内执行instanceof检查:

for(Element e: retval) {
    if(e instanceof PdfPTable) {
        ((PdfPTable) e).keepRowsTogether(0);
    }
}

作为风格注释,您应该以小写字母( end )开头来命名方法,而keeprowstogetherattr应该是一个在C#和Java中都名为KEEP_ROWS_TOGETHER_ATTR (或者更好的是ATTR_KEEP_ROWS_TOGETHER )的常量字段。

暂无
暂无

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

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