public class ByteDataHandler implements DataHandler { public Object handleParam(InputStream in) { return new Byte(in.read()); } } public class StringDataHandler implements DataHandler { public Object handleParam(InputStream in) { StringBuffer strBuffer = new StringBuffer(); while ((int read = in.read()) != 0) { strBuffer.append((char)read); } return strBuffer.toString(); } } public class LongDataHandler implements DataHandler { // implementation here }