【问题标题】:What is casting for JAVA8?什么是 JAVA8 的铸造?
【发布时间】:2019-08-14 20:18:59
【问题描述】:

有人可以解释为什么TextMessage textMessage = (TextMessage) message; 工作吗? (JAVA 8)

TextMessage 继承 Message

消息不是Clonable的实例

if(message instanceof TextMessage) {
   TextMessage textMessage = (TextMessage) message; 
   String body = textMessage.getBody(); 
}

预期的输出很好。

【问题讨论】:

  • 请编辑以明确您的问题是什么。不清楚你在问什么
  • 知道了。更好?

标签: java jms ibm-mq spring-jms


【解决方案1】:

它之所以有效,是因为当您将 textMessage 设置为等于它时,您正在转换消息对象。实际上,您是在告诉 Java 忽略它认为 message 是什么,而是将其视为 TextMessage 对象。这意味着它将通过编译阶段。

在您的代码中,您已经尽职尽责地事先检查了该消息是否真的是 TextMessage。如果您还没有这样做,如果您的代码在任何时候在 message 不是 TextMessage 的情况下运行,您将获得 Java 类强制转换异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多