我正在使用 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/