有人可以解释为什么TextMessage textMessage = (TextMessage) message;
起作用吗? (JAVA 8)
TextMessage继承Message
邮件不是Clonable的实例
if(message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String body = textMessage.getBody();
}
预期的产出是好的。
最佳答案
之所以起作用,是因为在将textMessage设置为与之相等时,您正在投射消息对象。实际上,您是在告诉Java忽略其认为的消息内容,而是将其视为TextMessage对象。这意味着它将通过编译器阶段。
在您的代码中,您已经进行了充分的努力以预先检查该消息是否确实是TextMessage。如果您还没有这样做,那么在任何时候您的代码都运行在message不是TextMessage的地方,您将得到Java类强制转换异常。