java 板


LINE

※ 引述《Maisky (McDummy)》之銘言: : 如果要用ObjectInputStream和ObjectOutputStream, 傳的object就應該要 : 是Serializable. 而BufferedImage不是Serializable,所以 : ImageIO.write(BufferedImage, "png", ObjectOutputStream) 並沒有說用 ObjectOutputStream 傳的 object 就必須 Serializable。 正確的說法應該是, 透過 writeObject() 傳出去的 object 才需要 Serializable。 ObjectOutputStream 用的是 Composition 的概念, 在他的內部其實是另一個 OutputStream, 當呼叫的 method 與 Object 的操作無關, ObjectOutputStream 就會直接把呼叫轉給其內部的 OutputStream。 以 write(byte[]) 為例,source code 如下: public void write(byte[] buf) throws IOException { bout.write(buf, 0, buf.length, false); } // 其中 bout 就是 ObjectOutputStream 內部的 Stream ImageIO 跟 ObjectOutputStream 的 source 都有點複雜, 所以接下來我就直接推理了。 如果你有看完這串所有的討論, 你應該會知道後來我們已經發現這個問題跟 ObjectOutputStream 無關, 即使是用 FileOutputStream 或 SocketOutputStream 也會有相同的問題, 並且我們已經找出問題並解決了。 如果如你所說,ImageIO 是用 Serializable 方式傳送圖片, 你要如何解釋為什麼使用 FileOutputStream 沒有問題? --- ImageIO 不是用 Serializable 在傳資料的, 他是把 image,依照你所指定的 format (jpg, png, etc) 寫成對應的 Image File, 所以用 ImageIO 把 image 寫成檔案後,你家的繪圖軟體才打得開。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.160.117
1F:→ TonyQ:Composition? 這不是 Decoration 嗎 ?XD 01/02 10:32
2F:→ tkcn:Decorated 的精神之一就是用 Composition 代替 Inheritance 01/02 10:57
3F:→ TonyQ:你在開玩笑吧 , 你翻翻API就看的到 ObjectOutputStrema有 01/02 11:07
4F:→ TonyQ:繼承 OutputStream , 且被裝飾者本就跟裝飾者要同一繼承體系 01/02 11:09
5F:→ TonyQ:怎麼會有「代替」繼承這回事出現 , 這兩者在這的性質不同啊. 01/02 11:11
6F:→ TonyQ:還是你在講得是子類別延伸出去的繼承樹 XD 01/02 11:16
7F:→ TonyQ: *避免 01/02 11:18
8F:→ tkcn:他還是有利用到繼承沒錯,但那是為了達成 setComponent的手段 01/02 11:25
9F:→ TonyQ:如果是要 setComponent , interface-implement 就ok了 XD 01/02 11:29
10F:→ tkcn:但是 OutputStream 裡頭有提供實作,我覺得這樣做並沒有問題 01/02 11:31
11F:→ TonyQ:覺得應是OutputStream要拿來作為被裝飾的基底類別吧:3 01/02 11:31
12F:→ TonyQ:覺得雖然Composition可以解釋 , 不過總覺得很彆扭 XD 01/02 11:32
13F:→ tkcn:ttp://tinyurl.com/yfh8269 最後一段 01/02 11:33
14F:→ TonyQ:是說講Composition 我總會想到 Composition Pattern . XDDD 01/02 11:37
15F:→ tkcn:http://tinyurl.com/yksyaza 這篇應該比較有說服力了 01/02 11:38
16F:→ Maisky:我說的是BufferedImage不是Serializable,所以才會有問題的 01/03 09:10
17F:→ Maisky:Only objects that support the java.io.Serializable 01/03 09:12
18F:→ Maisky:interface can be written to streams. 01/03 09:13
19F:→ Maisky:我並沒說ImageIO 是用 Serializable 方式傳送圖片 01/03 09:21
20F:→ tkcn:ImageIO 是重新分析 Object 內容用對應 format byte 陣列傳送 01/03 12:27
21F:→ tkcn:我不懂你現在到底想幹嘛,證明你是對的? 01/03 12:29







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP