有人可以解释为什么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类强制转换异常。

09-30 14:37