Re: [問題] Tomcat雜問

看板java作者 (LaPass)時間13年前 (2012/05/06 13:16), 編輯推噓3(3011)
留言14則, 3人參與, 最新討論串2/3 (看更多)

05/05 15:15,
現在我看到Serializable就頭大.... 這東西不好用....orz
05/05 15:15

05/05 15:27,
4板... 有點久不過我先去找來看看
05/05 15:27

05/06 01:04,
敢問 Serializable 哪裡不好用?
05/06 01:04
看到libary中有 Serializable 這個東西 通常就是準備一個物件存成檔案、透過網路線傳到別的地方去之類的 大部分的狀況下,用起來還不錯 但是我在傳的時候常常遇到一種問題 Class T implement Serializable { public int i; public T(int i){this.i =i;} } T t1 = new T(1); T t2 = new T(2); T t3 = new T(3); ArrayList<T> alt = new ArrayList(); alt.add(t1); alt.add(t2); // 把 alt透過ObjectStream傳去出 // 這時很正常,對方收到的alt裡面的T.i分別是 1、2 t1.i = 4; t2.i = 5; t3.i = 6; alt.add(t3); // 第二次把 alt透過ObjectStream傳去出 // 這時就會出問題了,alt裡面的T.i是 1 2 6 類似的狀況也發生在android中的 Bundle b = getIntent().getExtras(); b.putSerializable(); b.getSerializable(); 這是跨activity傳遞值的辦法 第一次使用Bundle傳遞Serializable物件時,ok 第二次使用時,就會出問題,收到的值可能會跟傳過去的不一樣。 要說原理 雖然我沒看到解釋這種狀況的文 但是我猜Serializable在傳遞Object時,會先檢查參照 如果有跟曾經傳過的物件的參照一樣,就直接使用上一次傳過去的值 所以,在用Serializable的時候,不小心的話會出現難以發現的bug -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.233.155.148

05/06 15:07, , 1F
呼叫個 reset() 很困難嗎@@?
05/06 15:07, 1F

05/06 15:39, , 2F
bundle下找不到reset....
05/06 15:39, 2F

05/06 15:54, , 3F
tomcat的session...不清楚
05/06 15:54, 3F

05/06 17:12, , 4F
http://tinyurl.com/bmftcb2 覺得有點眼熟,原來問題變了啊
05/06 17:12, 4F

05/06 17:13, , 5F
Android 用 Bundle 送我倒沒試過。等有實戰經驗再回來分享
05/06 17:13, 5F

05/06 18:25, , 6F
是啊,第一次遇到這個問題就是PO qrtt1貼的篇文的時候,第
05/06 18:25, 6F

05/06 18:32, , 7F
二次是用android的bundle的時候。第二次的解決方式是,用
05/06 18:32, 7F

05/06 18:34, , 8F
基本型值,例如int String 之類的去傳
05/06 18:34, 8F

05/06 22:09, , 9F
Bundle 應該有putByteArray getByteArray
05/06 22:09, 9F

05/06 22:10, , 10F
這樣應該也可以用 Serializable ba?
05/06 22:10, 10F

05/06 23:16, , 11F
已經有put/set Serializable可以用了,但是第二次值會跑掉
05/06 23:16, 11F

05/07 07:09, , 12F
...我的意思是說自己做byte[]->obj的動作
05/07 07:09, 12F

05/07 09:15, , 13F
囧" 聽起來很麻煩的樣子.... 但應該可行
05/07 09:15, 13F

05/07 10:40, , 14F
是還好...大概長http://ideone.com/9KcNb 這樣子
05/07 10:40, 14F
文章代碼(AID): #1FfWalHn (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
5
16
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
問題
5
16
文章代碼(AID): #1FfWalHn (java)