[Domino]“java.lang.ClassCastException:lotus.domino.cso.Item”异常解决办法
[Domino]
“java.lang.ClassCastException:lotus.domino.cso.Item”
异常解决办法
编写者 |
日期 |
关键词 |
郑昀@ultrapower |
2005-6 |
Java Domino RichTextItem |
现象
通过Domino的Document.getFirstItem("Body")是可以获取当前邮件的Body字段,并试图直接转换为RichTextItem类型,从而访问该邮件的附件。
但是,有时候这个转换得到了下面的异常:
Log提示: |
Exception: java.lang.ClassCastException: lotus.domino.cso.Item |
导致错误的语句就是:
代码: |
RichTextItem bodyWithAttachs = (RichTextItem)doc.getFirstItem("Body"); |
原因
原因在于,这封邮件不一定有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强制转换:
Log提示: |
// grab the Body field of the current document, // and check each attachment Item itRichText = doc.getFirstItem("Body"); if("lotus.domino.cso.RichTextItem" == itRichText.getClass().getName() ) { /* * 不一定这封邮件有RichTextItem,所以最保险的办法是先转换得到Item类型, * 然后再判断它的类名。 * 否则如果这封邮件是纯文本,那么直接 * RichTextItem bodyWithAttachs = (RichTextItem)doc.getFirstItem("Body"); 将会得到这样的异常: java.lang.ClassCastException: lotus.domino.cso.Item */ RichTextItem bodyWithAttachs = (RichTextItem)itRichText; |
虽然是一个很小的细节,但还是写下来了。
编写者 |
日期 |
关键词 |
郑昀@ultrapower |
2005-6 |
Java Domino RichTextItem |