看板 java 關於我們 聯絡資訊
菜逼八問個問題 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
Dnight: cast那邊改成 (p003.test003t) 看看 10/15 16:46
Dnight: 其實我不是很明白你要做什麼...先試試這個解法 10/15 16:46
我是希望如果有人從遠端(像是經過socket)傳給我一個class 我能夠在本地使用那個class 所以我的想法就是把class序列化 >> object轉byte[] >> 傳出去 >> 接收 >> byte[]轉object >> object指定為某class來使用
ssccg: 序列化本來就只能轉回同樣class的物件 10/15 17:14
ssccg: 要能轉回來顯然知道原本長怎樣,那為什麼不放在同package 10/15 17:15
因為要模擬從遠端傳輸... 最後找到method.invoke的寫法 大概可以解決了感恩 ※ 編輯: aynmeow (114.38.253.21), 10/15/2015 17:28:18
qrtt1: 為什麼要這樣搞它@@ 10/15 18:02
luoqr: EJB? 10/15 20:07
longlongint: package不同就是不同名的物件 10/15 23:57
haha02: 類別前加上package名才是它真正的名字 名字不一樣嘗試轉 10/16 01:55
haha02: 型就錯了 10/16 01:55
ssccg: 遠端傳輸也可以用一樣的class啊,不懂在模擬什麼 10/16 05:41
ssccg: 模擬只告訴對方整個class結構,但就不告訴對方class name? 10/16 05:43