感觉还是挺常用的,从socket读到一个byte数组,再按照协议构建一个class对象,再对这个对象进行一些处理,然后再转化为byte数组发出去。感觉这个转化过程太麻烦,有没有直接的方法将class中的所有数据成员按顺序转化为一个byte数组?以及反过来,给一个byte数组,可直接构建一个对应的class?

解决方案 »

  1.   

    楼主想做什么?没有特殊需求的话,使用java的序列化即可。
      

  2.   

    呵呵,可能我说的不明白,举个例子。有个class
    class A{
    int i;
    char c[10];
    void setInt(int i){
    }
    void setChar(char[] c){
    }
    ....
    }
    然后要从socket中读出数据,比如前四个字节代表一个i,紧接着20个字节代表c,这样就构建了一个A,然后处理,再把处理后的A再发送出去。
    我现在对socket数据的发送、接收都是用byte[]做的,所以接收的时候得把byte[]依个读出,构成一个A,发送时得把A的每个成员转化为byte,最后按顺序以一个byte[]形式发出去。
    感觉处理的有些繁琐,有没有更简化的方法?
      

  3.   

    java序列化。
    实现Serialize接口,使用ObjectInputStream和ObjectOutputStream。
    不用你自己去做这些工作的。
      

  4.   

    更进一步,你可以看看web service,rmi,ejb,corba等东东是不是满足你的需求。
      

  5.   

    再说一句,你这个是把对象转换成字节流而不是把class转换成字节流
      

  6.   

    呵呵,Java的every class都是 Class类的实力哦。
    先看看Class是不是可序列化的,不是就聚合它。
      

  7.   

    让这个类实现序列化,在传输时java将自动将其转为字节数组