有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在事件处理程序和回调中处理版本化对象

我的问题
对于在处理程序或回调中反序列化的不同版本的对象,有没有最著名的方法

一些背景信息
我们将使用序列化对象作为消息,在软件套件中的各个组件之间进行通信。它们可以是JSON格式,或者使用类似protobufs的东西。无论何时开始序列化对象,无论是用于长期存储还是在应用程序的不同版本之间,都必须能够处理这些对象的不同版本(可能使用Java注释或Attributes-C#)
我试图避免这样的代码:

onRecvMyMsg(MyMsg msg)
{
  if (msg.version == 1.0)
    // process it here
  else if (msg.version < 1.5)
    // process it here 
  else if (msg.version < 2.0)
    // process part of it in the 1.5 handler and the other part here
  else if // etc...
}

在多次添加/增强/更改之后,这似乎将是一场维护噩梦
当然,一定有人解决了这个问题,因为这似乎是软件工程中非常常见的做法。任何帮助或建议都将不胜感激


共 (0) 个答案