VersionObjectInputStream.java |
import java.io.*;
import java.util.*;
public class VersionObjectInputStream extends ObjectInputStream {
HashMap map = new HashMap();
public VersionObjectInputStream(InputStream in) throws IOException {
super(in);
}
protected Class resolveClass(ObjectStreamClass v)
throws IOException, ClassNotFoundException {
String version = (String) this.readObject();
ClassLoader loader = (ClassLoader) map.get(version);
if (loader==null) {
loader = new VersionClassLoader(version);
if (loader==null) throw new ClassNotFoundException();
map.put(version,loader);
}
System.out.println(v.getName());
return loader.loadClass(v.getName());
}
public static void main(String[] argv)
throws IOException, ClassNotFoundException {
VersionObjectInputStream in = new VersionObjectInputStream(System.in);
Liste l = (Liste) in.readObject();
System.out.println(l);
in.close();
}
}