java - 如何序列化第三方不可序列化的最终类(例如谷歌的 LatLng 类)?

标签 java serialization

我正在使用 Google's LatLng class来自 v2 Google Play 服务。该特定类是最终类,未实现 java.io.Serializable。有什么方法可以使 LatLng 类实现 Serializable

public class MyDummyClass implements java.io.Serializable {
    private com.google.android.gms.maps.model.LatLng mLocation;

    // ...
}

我不想声明 mLocation transient

最佳答案

它不是 Serializable 但它是 Parcelable,如果这是一个选项的话。如果没有,您可以自己处理序列化:

public class MyDummyClass implements java.io.Serialiazable {
    // mark it transient so defaultReadObject()/defaultWriteObject() ignore it
    private transient com.google.android.gms.maps.model.LatLng mLocation;

    // ...

    private void writeObject(ObjectOutputStream out) throws IOException {
        out.defaultWriteObject();
        out.writeDouble(mLocation.latitude);
        out.writeDouble(mLocation.longitude);
    }

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
        mLocation = new LatLng(in.readDouble(), in.readDouble());
    }
}

关于java - 如何序列化第三方不可序列化的最终类(例如谷歌的 LatLng 类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220554/

相关文章:

java - JPA 性能优化或替代方案

java - 如何从 ArrayList 填充 JComboBox

java - 在Java中序列化JSON数据是一种有效的方法吗?

serialization - Hadoop中的序列化-可写

python - 有谁知道哪里有序列化数据并在输出中保留其顺序的方法?

java - ANTLR序列化

java - Active Directory 允许使用禁用的帐户创建 InitialContext

java - 如何在涉及 Fragment 的 Android 代码中找到空指针错误

java - 指纹SDK体验

java - 在java中反序列化一个单例