【问题标题】:How can I refactor these wrapper methods to get rid of duplicated code?如何重构这些包装方法以消除重复代码?
【发布时间】:2011-08-15 15:43:06
【问题描述】:

以下两种方法用于使用 Google Gson 包装反序列化:

public static <T> T Deserialize(String jsonData, Type t) {
    T obj = null;

    try {
        obj = new Gson().fromJson(jsonData, t);
    } catch (Exception e) {
        Log.e(DEBUG_TAG, e.getMessage());
    }

    return obj;
}

public static <T> T Deserialize(String jsonData, Class<T> toClass) {
    T obj = null;

    try {
        obj = new Gson().fromJson(jsonData, toClass);
    } catch (Exception e) {
        Log.e(DEBUG_TAG, e.getMessage());
    }

    return obj;
}

它们几乎相同,但我想不出一个聪明的方法来摆脱重复的代码。

有什么建议吗?

【问题讨论】:

标签: java refactoring gson code-duplication


【解决方案1】:

Class 实现了接口Type,所以看起来只有第一种方法就足够了。

编辑:实际上看起来这些方法是单独实现的,这是有原因的。在重构之前至少阅读the javadoc 以了解原因。感谢 home 指出这一点。

【讨论】:

  • 应该知道这一点。谢谢!
【解决方案2】:

TypeClass实现的接口,完全可以去掉第二种方法。

【讨论】:

  • Class 是一个类,所以从技术上讲,Type 不是超级接口,它只是实现它。
  • 不,fromJson 方法被重载以获取类或类型对象。由于 java 不会对参数的动态类型进行分派,因此总是会调用采用Type 参数的重载。
猜你喜欢
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多