请彭老师进来,切实解决一下我的一个困惑,关于本书

04-09-22 zc0000
我在阅读本书第一章时,遇到一个问题,这个问题非常使我困惑,希望彭老师或其他网友给予具体指点!

第一章37页,那个StringType代码,实现Linkable接口:

public class StringType implements Linkable {

private String content = null;

private int msgType;

private ByteBuffer byteBuffer = null;

public StringType(int msgType) {

this.msgType = msgType;

}

public String getContent() {

return content;

}

public void setContent(String content){

this.content = content;

}

public void accpet(QueueWorker worker) throws Exception {

worker.run(msgType, this);

}

public OutputStream getOutputStream() {

OutputStream outputStream = null;

try {

outputStream = DataTypeHelper.writeString(content);

} catch (Exception ex) {

}

return outputStream;

}

public void setInputStream(InputStream in) {

try {

this.content = DataTypeHelper.getString(in);

} catch (Exception ex) {

}

}

}

按照彭老师的思想,为了便于传输,Message Queue中只存放 ByteArrayStream对象,所以把其他对象放入MQ中时要先将该对象包装成

ByteArrayStream对象,然后由访问者操作该包装后的对象,将它放入Queue.

这里我翻阅了很多资料却无法弄明白:这"包装"究竟是怎么实现的??我好象找不到这样的方法,能把一个普通的任意的对象转变成为ByteArrayStream;

而彭老师介绍的这种方法好象和 ObjectInputStream,ObjectOutputStream中的readObject(),writeObject()又不太相同,所以,这有些让我束手无策.具体地说,就是这段代码中那个 DataTypeHelper 类,究竟是怎么实现的?它的这些静态方法;以一个对象为参数,可以得到该对象包装后的ByteArrayStream,这其中究竟是什么细节??

我的JAVA水平比较初浅,所以,在这里希望彭老师或是其他网友,能抽空给我比较具体的指点!!给出一些示范代码!而不是泛谈一些大概的思想!太概括的东西对于初学者并没有太大用处!这个问题确实是非常让我困惑,急需获得解答,希望彭老师关注一下,谢谢!!

banq
2004-09-22 08:42
Queue中应该是存放InputStream或OutputStream类型吧。其他类型则要做转换,这是一个简单的类型转换

Object转换成OutputStream:

    OutputStream outputStream = new ByteArrayOutputStream();
      //send the request query object to the server
      ObjectOutputStream oos = new ObjectOutputStream(outputStream);
      oos.writeObject(object);
      oos.close();
      return outputStream;

String转换成OutputStream如下:
OutputStream outputStream = new ByteArrayOutputStream();
      byte[] bytes = strs.getBytes("UTF-8");
      outputStream.write(bytes, 0, bytes.length);
      return outputStream
  

猜你喜欢