站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题java中有没有把class直接转化为byte数组的方法?

java中有没有把class直接转化为byte数组的方法?

摘要: java中有没有把class直接转化为byte数组的方法?


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


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


呵呵,可能我说的不明白,举个例子。有个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[]形式发出去。
感觉处理的有些繁琐,有没有更简化的方法?


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



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


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


呵呵,惭愧,说得不够严谨
受教了


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



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


↑返回目录
前一篇: 如何把arraylist部分拷贝到另外一个arraylist里?
后一篇: 如何实现这个问题?