[Domino] java.lang.ClassCastException: lotus.domino.cso.Item cannot be cast to lotus.domino.RichTextItem

已解决 lotus-notes
0

在使用 NCSO API,通过 Domino 的 Document.getFirstItem("Body") 是可以获取当前邮件的 Body 字段,并试图直接转换为 RichTextItem 类型,从而访问该邮件的附件。

但是,有时候这个转换得到了下面的异常:

java.lang.ClassCastException: lotus.domino.cso.Item cannot be cast to lotus.domino.RichTextItem

导致错误的语句就是:

RichTextItem bodyWithAttachs = (RichTextItem)doc.getFirstItem("Body");

如果觉得这对你有用,请随意赞赏,给与作者支持
回答 (2)
2 个回答

0

已采纳

这种情况我遇到过。

原因在于,这封邮件不一定有 RichTextItem,所以最保险的办法是先转换得到 Item 类型,然后再判断它的 real class name。

否则如果这封邮件是纯文本,那么直接

RichTextItem bodyWithAttachs = (RichTextItem)doc.getFirstItem("Body");

将会得到这样的异常:

java.lang.ClassCastException: lotus.domino.cso.Item。

解决办法:

先转换得到 Item,再判断这个 Item 的 real class Name 是否为 lotus.domino.cso.RichTextItem

来决定是否应该进一步作 RichTextItem 强制转换:

Item itRichText = doc.getFirstItem("Body");

if("lotus.domino.cso.RichTextItem".equals(itRichText.getClass().getName()))
{
    RichTextItem bodyWithAttachs = (RichTextItem)itRichText;
}
0

类型不匹配,是不是有的 Item 不是 RichTextItem,排除一下。