// only if this is an object (not primitive) and non null! private static void writeRealObject(Object value, Class vClass, OutputStream os) throws IOException { try { if (vClass.equals(String.class)) { os.write(0); PDataStream.writeUTF((String) value, os); } else if (vClass.equals(Integer.class)) { os.write(1); PDataStream.writeInt(((Integer) value).intValue(), os); } else if (vClass.equals(Long.class)) { os.write(2); PDataStream.writeLong(((Long) value).longValue(), os); } else if (vClass.equals(Byte.class)) { os.write(3); os.write(((Byte) value).byteValue()); } else if (vClass.equals(Boolean.class)) { os.write(4); PDataStream.writeBoolean(((Boolean) value).booleanValue(), os); } else if (vClass.equals(Character.class)) { os.write(5); PDataStream.writeChar(((Character) value).charValue(), os); } else if (vClass.equals(Short.class)) { os.write(6); PDataStream.writeShort(((Short) value).shortValue(), os); } else if (vClass.equals(Float.class)) { os.write(7); PDataStream.writeFloat(((Float) value).floatValue(), os); } else if (vClass.equals(Double.class)) { os.write(8); PDataStream.writeDouble(((Double) value).doubleValue(), os); } else if (Externalizable.class.isAssignableFrom(vClass)) { os.write(11); String name = vClass.getName(); PDataStream.writeUTF(name, os); Externalizable tmp = (Externalizable) value; tmp.writeObject(os); } else { os.write(12); ObjectOutputStream out = new ObjectOutputStream(os); out.writeObject(value); } } catch (Exception exc) { throw new IOException(exc.toString()); } }