相关疑难解决方法(0)

如果将对象移动到另一个包或重命名,如何反序列化该对象?

考虑以下情况:

有一个序列化文件,由旧版本的应用程序创建.不幸的是,已经序列化了类的包已更改.现在我需要将此文件中的信息加载到同一个类中,但位于不同的包中.此类已serialVersionUID定义且未更改(即兼容).

问题:是否可以使用任何技巧从该文件加载新的类实例(除了将类复制到旧包中然后使用反序列化包装器逻辑)?可以用来readResolve()从移动/重命名类中恢复吗?如果没有,请解释原因.

java serialization

34
推荐指数
5
解决办法
1万
查看次数

如何在运行时从类序列化中排除字段?

如何在运行时从序列化过程中排除类字段?编译时有瞬态修饰符,但运行时呢?我的意思是使用ObjectOutputStream的常见java序列化,而不是gson或其他东西.

对不起我想我没解释得对.这是不完全有关序列化的,而是 -serialization.我有一批遗留文件并像这样处理它们:

public class Deserialize {

/**
 * @param args
 * @throws IOException 
 * @throws ClassNotFoundException 
 */
public static void main(String[] args) throws ClassNotFoundException, IOException {
    File file = new File("/home/developer/workspace/DDFS/some.ddf");
    HackedObjectInputStream in = new HackedObjectInputStream(new GZIPInputStream(new FileInputStream(file)));

    System.out.println("Attempt to open " + file.getAbsolutePath());
    Object obj = in.readObject();
    in.close();


}

 static class HackedObjectInputStream extends ObjectInputStream
    {

        /**
         * Migration table. Holds old to new classes representation.
         */
        private static final Map<String, Class<?>> MIGRATION_MAP = new HashMap<String, …
Run Code Online (Sandbox Code Playgroud)

java serialization

25
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×2

serialization ×2