【问题标题】:Do i need to implement Serializable for model classes while using GSON(serialization/deserialization library)在使用 GSON(序列化/反序列化库)时,我是否需要为模型类实现 Serializable
【发布时间】:2017-05-16 17:39:43
【问题描述】:

我使用默认的 HttpUrlConnection 类进行 api 调用和GSON 将 Java 对象转换为 json 请求并将 json 响应转换为等效的 Java 对象。我创建了各种模型(pojo 类)来将请求/响应转换为模型对象.我的疑问是,由于 GSON 是序列化/反序列化库,因此对所有这些模型实现 Serializable 是否理想?

public class Contact implements Serializable {
    private String name;
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

我从所有模型中删除了实现 Serializable ,一切似乎都很好。但我很困惑它是否正确?

【问题讨论】:

  • 没有。您不必在使用 Gson 时将它们设为 Serializable。你做对了。

标签: android serialization model pojo gson


【解决方案1】:

取决于你想用它们做什么,但很可能你不需要。 Serializable 是在 Java 中序列化数据的一种方式,这是一种默认的 Java 方式。 JSON 序列化是另一个。 Parcelable 是 Android 特有的第三个。唯一需要使用 Serializable 的情况是,如果要将其传递给以 Serializable 作为参数的 API。如果您不需要这样做,那么使用 GSON 进行序列化而不实现 Serializable 就可以了。

这 3 种方法之间的区别在于它们输出的数据格式。不同的格式有不同的优缺点,但它们都能完成工作。

【讨论】:

  • 我的 api 没有将 Serializable 作为参数。如果我在不需要序列化数据的情况下实现 Serializable 有什么缺点吗?我已经读过,在术语上实现 Serializable 没有缺点内存分配和可访问性.. stackoverflow.com/questions/16789076/…
  • 没有缺点,只是代码比需要的稍微复杂一些。而且真的不多。如果您已经拥有它,我不会优先删除它。事实上,在某些情况下,您可能仍然需要它(我有时不得不从 JSON 反序列化一个对象,然后通过 Intent 将其传递给另一个 Activity,这需要 Serializable)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多