java - Java Android 中的 C# OfType

标签 java c# android itext

我正在使用 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 应该是名为 KEEP_ROWS_TOGETHER_ATTR 的常量字段>(或者更好的是,ATTR_KEEP_ROWS_TOGETHER)在 C# 和 Java 中。

关于java - Java Android 中的 C# OfType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715956/

相关文章:

java - 解决错误::撤销权限android.permission.CALL_PHONE

java - 数据库主键

java - 在java中的新窗口中下载PDF

c# - Playwright (.NET) 尝试使用与安装的浏览器版本不同的浏览器版本

c# - SqlDataReader 仅返回 SqlCommand 中的第一个选择

android - adb shell mount -o remount,rw -t yaffs2/dev/block/mtdblock0/system 不允许操作

android - Cordova 安卓 FileReader.readAsDataURL NOT_FOUND_ERR

java - 为什么字符串中的最后一个数字与正则表达式组不匹配?

c# - 将两个表格直接叠加到一个word文档中

android - 我可以使用 CameraX (Android Jetpack) 录制视频吗?