package mgr; import java.io.*; class Item extends Object implements Codes { private int itemCode; private int itemSize; private Object itemData; Item() { itemData = new Object(); }//item() Item (int code, int type, Object src) { itemCode = code; itemData = src; if (src instanceof String) { itemSize = ((String) itemData).length(); return; }//end if switch (itemType()) { case TYPE_BYTE: itemSize = 1; break; case TYPE_SHORT: itemSize = 2; break; case TYPE_INT: itemSize = 4; break; ...//other types case TYPE_NONE: default: itemSize = 0; break; }//switch }// Item (int code, int type, Object src) Item (DataInputStream inbuf) throws IOException //reconstitute { try { itemCode = inbuf.readInt(); itemSize = inbuf.readInt(); switch (itemType()) { case TYPE_BYTE: itemData = (Object) new Integer( (int) inbuf.readByte()); break; case TYPE_SHORT: { int temp = inbuf.readShort(); itemData = (Object) new Integer(temp); //convert to an object } ... case TYPE_STR: { byte temp [] = new byte [20]; //any size will do for (int i =0; i < itemSize; i++) temp[i] = inbuf.readByte(); String s = new String (temp, 0 /* hibyte val */); itemData = s; temp = s = null; } break; ... }//switch }//try catch(IOException exception) {...} }// Item (DataInputStream inbuf) throws IOException //reconstitute //accessors + mutators ... void serialize(DataOutputStream out) { try { out.writeInt(itemCode); out.writeInt(itemSize); Integer n = new Integer(0); switch (itemType()) { case TYPE_BYTE: n =(Integer) itemData; out.writeByte( (byte) n.intValue() ); break; case TYPE_SHORT: ... }//switch }//try catch (IOException exception) {...} }//serialize }//Item //End of file