[問題] Serialize class然後傳輸的問題

看板java作者 (傻瓜 我們不一樣)時間9年前發表 (2015/10/15 07:57), 9年前編輯推噓4(407)
留言11則, 6人參與, 最新討論串1/1
菜逼八問個問題 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://www.ptt.cc/bbs/java/M.1444895823.A.ED3.html ※ 編輯: aynmeow (114.38.253.21), 10/15/2015 16:15:52

10/15 16:46, , 1F
cast那邊改成 (p003.test003t) 看看
10/15 16:46, 1F

10/15 16:46, , 2F
其實我不是很明白你要做什麼...先試試這個解法
10/15 16:46, 2F
我是希望如果有人從遠端(像是經過socket)傳給我一個class 我能夠在本地使用那個class 所以我的想法就是把class序列化 >> object轉byte[] >> 傳出去 >> 接收 >> byte[]轉object >> object指定為某class來使用

10/15 17:14, , 3F
序列化本來就只能轉回同樣class的物件
10/15 17:14, 3F

10/15 17:15, , 4F
要能轉回來顯然知道原本長怎樣,那為什麼不放在同package
10/15 17:15, 4F
因為要模擬從遠端傳輸... 最後找到method.invoke的寫法 大概可以解決了感恩 ※ 編輯: aynmeow (114.38.253.21), 10/15/2015 17:28:18

10/15 18:02, , 5F
為什麼要這樣搞它@@
10/15 18:02, 5F

10/15 20:07, , 6F
EJB?
10/15 20:07, 6F

10/15 23:57, , 7F
package不同就是不同名的物件
10/15 23:57, 7F

10/16 01:55, , 8F
類別前加上package名才是它真正的名字 名字不一樣嘗試轉
10/16 01:55, 8F

10/16 01:55, , 9F
型就錯了
10/16 01:55, 9F

10/16 05:41, , 10F
遠端傳輸也可以用一樣的class啊,不懂在模擬什麼
10/16 05:41, 10F

10/16 05:43, , 11F
模擬只告訴對方整個class結構,但就不告訴對方class name?
10/16 05:43, 11F
文章代碼(AID): #1M7rnFxJ (java)
文章代碼(AID): #1M7rnFxJ (java)