当一个类被一个自定义的 ClassLoader 加载时,当然,调用结果对象的“getClassLoader()”方法将默认返回自定义的 ClassLoader。
我的查询是如果同一个对象被序列化,通过网络发送然后反序列化会发生什么;在 Deserialised 类上调用“getClassLoader()”是否仍会返回自定义 ClassLoader?
当一个类被一个自定义的 ClassLoader 加载时,当然,调用结果对象的“getClassLoader()”方法将默认返回自定义的 ClassLoader。
我的查询是如果同一个对象被序列化,通过网络发送然后反序列化会发生什么;在 Deserialised 类上调用“getClassLoader()”是否仍会返回自定义 ClassLoader?
我的查询是如果同一个对象被序列化,通过网络发送然后反序列化会发生什么;在 Deserialised 类上调用“getClassLoader()”是否仍会返回自定义 ClassLoader?
类加载器未序列化。getClassLoader() 将为您提供 ObjectInputStream 正在使用的类加载器。
来自ObjectInputStream.resolveClass
ObjectInputStream中该方法的默认实现返回调用的结果
Class.forName(desc.getName(), false, loader)
其中 loader 确定如下:如果当前线程的堆栈上有一个方法,其声明类是由用户定义的类加载器定义的(并且不是为实现反射调用而生成的),则 loader 是对应于最近的类加载器这种方法对当前执行的帧;否则,加载程序为空
没有。您将类的实例与实际的类本身混淆了。必须在反序列化序列化对象之前加载该类。