我有一个测试,在自定义类加载器中加载项目的一些模块(用于测试目的)。此类对象中的一种方法将自定义对象作为参数,如果我将其从测试类(已由默认类加载器加载)传递给由我的自定义类加载器加载的对象中的方法我' 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));