【问题标题】:ClassCastException while casting activemqObjectMessage强制转换 activemqObjectMessage 时出现 ClassCastException
【发布时间】:2021-06-14 11:20:37
【问题描述】:

为什么我不能在这段代码中转换ActiveMQObjectMessage

public void onMessage(Message message) {
    try {
        ActiveMQObjectMessage mqObjectMessage = (ActiveMQObjectMessage)  message; //i got exception here

        distributor.sendMessage(mqObjectMessage);

    } catch (ClassCastException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: java activemq message messagebroker


    【解决方案1】:

    如果传入类型是 TextMessage 类型,那么您当然不能将其转换为 ObjectMessage,因为这不是正确的类型,因为 TextMessage 没有实现 ObjectMessage 接口。您需要使用类型检查来确定您正在处理的消息类型并执行正确的强制转换。

    if (message instanceof ObjectMessage) {
    } else if message instanceof TextMessage) {
    } // etc
    

    【讨论】:

    • 我的消息不是 ActiveMQObjectMessage 的实例!
    【解决方案2】:

    您的代码没有任何问题,它正在做它应该做的事情。

    1. 将带有类型转换的消息分配给 ActiveMQObjectMessage,如果它直接或间接实现 ObjectMessage
    2. 如果未捕获到异常并进行适当的日志记录,以便您可以检查消息来源以进行更正。

    【讨论】:

    • 是的,你是对的,谢谢,正如我在上一篇评论中提到的,我的问题是我的message 类型不是ActiveMQObjectMessage 的实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多