0

我有一个测试,在自定义类加载器中加载项目的一些模块(用于测试目的)。此类对象中的一种方法将自定义对象作为参数,如果我将其从测试类(已由默认类加载器加载)传递给由我的自定义类加载器加载的对象中的方法我' m 得到类型不匹配异常。

我认为我可以避免这个问题,因为幸运的是我的自定义对象实现了 Serializable(我想从测试类中对对象进行序列化,然后在我的自定义类加载器中对其进行反序列化并将其传递给方法)。但是,由于父类加载器加载了序列化 utils 类,因此生成的对象(反序列化输出)仍然指向默认类加载器。

如何反序列化自定义类加载器中的对象?编码:

Class<?> serialClassDefinition = classLoader.loadClass("org.apache.commons.lang.SerializationUtils");
        final byte[] serializedDestData = SerializationUtils.serialize(sampleData);
        final Method deSerializeMethod = serialClassDefinition.getDeclaredMethod("deserialize", byte[].class);
        final Object oldSmapleData = deSerializeMethod.invoke(null, serializedSampleData);
        return (invoke(stringA, stringB, stringC, oldSampleData, isAAA));
4

0 回答 0