将javax.jms.Message转换为com.ibm.jms.JMSTextMessage

将javax.jms.Message转换为com.ibm.jms.JMSTextMessage,java,jms,message-queue,ibm-mq,Java,Jms,Message Queue,Ibm Mq,模式: com.ibm.jms.JMSTextMessage jtm-->fjavax.jms.Message jtm 我收到一条JMSTextMessage,但我的函数参数是一条接口消息。JMSTextMessage添加了一个函数:getText,该函数在消息中不存在 如何在f函数中调用getText方法?是否有必须执行的方法/强制转换 当然,m.getText将不起作用,因为消息中不存在getText 网址: 如果您的m对象是JMSTextMessage的实例,您可能希望有一个instanc

模式:

com.ibm.jms.JMSTextMessage jtm-->fjavax.jms.Message jtm

我收到一条JMSTextMessage,但我的函数参数是一条接口消息。JMSTextMessage添加了一个函数:getText,该函数在消息中不存在

如何在f函数中调用getText方法?是否有必须执行的方法/强制转换

当然,m.getText将不起作用,因为消息中不存在getText

网址:


如果您的m对象是JMSTextMessage的实例,您可能希望有一个instanceof调用来检查,那么您可以强制转换它,然后像下面这样调用getText方法:

(JMSTextMessage)m).getText()
(TextMessage)m).getText()
但是,您可能不想将其强制转换为实际实现,因为这样会限制代码的可移植性,例如,您必须为Weblogic重写代码。因此,最好将消息对象强制转换为javax.jms.TextMessage接口,如下所示:

(JMSTextMessage)m).getText()
(TextMessage)m).getText()

我检查了m是TextMessage的实例,并且使用了第二种方法。谢谢在强制转换到与javax.jms.TextMessage不兼容的TextMessage时,我遇到了一个异常,正如上面在这个解决方案中所说的,当我尝试时,getText实际上返回了一个字符串,它无法转换为TextMessage,您能提出建议吗?@rinilnath在这种情况下,您有一个JMSBytesMessage而不是TextMessage,您必须从ByteMessage中读取字节,然后才能从中创建字符串。