作者aynmeow (傻瓜 我们不一样)
看板java
标题[问题] Serialize class然後传输的问题
时间Thu Oct 15 15:56:59 2015
菜逼八问个问题
1. 我先在 package 1 做一个
public class test003t implements Serializable{
private static final long serialVersionUID = -4844268319117569860L;
int b = 10;
}
2. 在 package 2 复制一个一模一样的test003t
3. 并把package 2 的 test003t 转成 byte[]
传给 package 1 的main method
在main method 把byte[]转回来成为object
结果下面这行出错了
test003t temp = (test003t) object1;
java.lang.ClassCastException: p003.test003t cannot be cast to p002.test003t
at p002.test001objectdencode.main(test001objectdencode.java:51)
4. 我去把package 1跟package 2 里面的test003t都转成byte[]
内容全部印出来 是完全一样的
既然如此为什麽不能用?
怕我叙述能力太差..
总之就是我在两个不同的package1 package2 都做出同名同内容的class
接着把两个class当成object转成byte[] (印出来的值都是一样的
在package1里面要把package2传过来的byte[]转回class就出错
但是如果是转同package的就不会错
为什麽...不是内容都一样吗?
====抱歉犯蠢了=======
後来仔细比对有一个数字不一样 所以认定的package name不一样就不行
那要怎麽做才能一样呢?
--
骤雨初歇村似画 蒙蒙夕雾满秋山
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.38.253.21
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1444895823.A.ED3.html
※ 编辑: aynmeow (114.38.253.21), 10/15/2015 16:15:52
1F:推 Dnight: cast那边改成 (p003.test003t) 看看 10/15 16:46
2F:→ Dnight: 其实我不是很明白你要做什麽...先试试这个解法 10/15 16:46
我是希望如果有人从远端(像是经过socket)传给我一个class
我能够在本地使用那个class
所以我的想法就是把class序列化 >> object转byte[] >> 传出去
>> 接收 >> byte[]转object >> object指定为某class来使用
3F:→ ssccg: 序列化本来就只能转回同样class的物件 10/15 17:14
4F:→ ssccg: 要能转回来显然知道原本长怎样,那为什麽不放在同package 10/15 17:15
因为要模拟从远端传输...
最後找到method.invoke的写法 大概可以解决了感恩
※ 编辑: aynmeow (114.38.253.21), 10/15/2015 17:28:18
5F:→ qrtt1: 为什麽要这样搞它@@ 10/15 18:02
6F:推 luoqr: EJB? 10/15 20:07
7F:推 longlongint: package不同就是不同名的物件 10/15 23:57
8F:推 haha02: 类别前加上package名才是它真正的名字 名字不一样尝试转 10/16 01:55
9F:→ haha02: 型就错了 10/16 01:55
10F:→ ssccg: 远端传输也可以用一样的class啊,不懂在模拟什麽 10/16 05:41
11F:→ ssccg: 模拟只告诉对方整个class结构,但就不告诉对方class name? 10/16 05:43