import java.io.*; import java.lang.reflect.*; import java.math.BigInteger; class Serializer { static void serialize(Object o, OutputStream out) throws Exception { if (o.getClass().equals(BigInteger.class)) { BigInteger b = (BigInteger) o; byte[] bytes = b.toByteArray(); out.write(bytes.length); out.write(bytes); } else { ObjectOutputStream oOut = new ObjectOutputStream(out); Class cls = o.getClass(); for (Field f : cls.getDeclaredFields()) { boolean wasAccessible = f.isAccessible(); f.setAccessible(true); oOut.writeObject(f.get(o)); f.setAccessible(wasAccessible); } } out.flush(); } public static void main(String[] args) throws Exception { serialize(new Point(2, 4), new FileOutputStream("point.data")); } }