java - 什么是 JAVA8 的类型转换?

标签 java jms ibm-mq spring-jms

有人可以解释为什么 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。如果您没有这样做,那么如果在任何时候您的代码运行时消息不是 TextMessage,您都会收到 Java 类强制转换异常。

关于java - 什么是 JAVA8 的类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478217/

相关文章:

java小程序显示来自本地主机的图像

java - 在 Kotlin 中解析列表的枚举

java - 在 ActiveMQ 中等待接收异步消息的更好方法

java - 如何在 Eclipse 中设置 log4j.properties?

java - JMS 连接 - 启动方法(IBM MQ impl)

java - 您如何将具有多个类的 Java 应用程序转换为一个 applet,每个类都有自己的框架

java - 如何将 AES CCM 与 BouncycaSTLe JCE 提供程序一起使用 - CCMParameters

java - 使用 jms spring 和 activemq 队列的聊天应用程序

java - 如何在 SourceTransferEndExit 将 msg 放入 MQ

java - 如何在客户端 WebsphereMQ 中设置 MQMD 消息上下文?