设计将对象从ClassType转换为String并将其取回

时间:2013-10-28 16:55:58

标签: java oop

我将不同类型的对象作为参数提供给不同的服务API。 示例API:

void API1(Object1 obj1);
void API2(Object2 obj2);

在接收API时,我将对象转换为JSON类型并存储在指定位置。另一个轮询器轮询存储的位置,并尝试使用Gson将其转换为对象类型。

我可以想到的一种方法是创建一个包含所有类型对象的RequestWrapper(例如Object1,Object2等),并在存储数据时填充正确的变量。

在接收端,我们可以将对象转换为RequestWrapper对象并检查填充的对象。

正如您所看到的,这需要额外的20多个变量对象,其中大多数都是null。此外,在将其转换为正确类型时会进行多次if-else检查。

如果有的话,以面向对象的方式实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在基本级别,似乎有两种方法可以获取来自客户端的序列化对象的数据类型。

  1. 让客户告诉你。
  2. 自己搞清楚。
  3. 我可以想到让客户告诉你的几种方式:

    1. 为每种不同的数据类型添加API。

      void API1(Foo obj1);
      void API1(Bar obj2);
      void API2(Foo obj1);
      void API2(Bar obj2);
      
    2. 要求客户将其包含在序列化形式中。

      {"class":"myPackage.MyClass"}
      
    3. 我可以想到几种方法来为自己解决这个问题:

      1. 预先解析JSON字符串中的某些唯一标识符(即在反序列化之前确定类型)。

        if (jsonString.contains("foo")) {
            Foo foo = gsonInstance.fromJson(jsonString, Foo.class);
        }
        
      2. 上述包装方法(即在反序列化后确定类型)。

      3. 我不知道任何方法都是面向对象的,但是面向对象是如何以序列化数据开始的呢?