作者RouterHsieh (醉臥美人膝,醒掌天下權)
看板java
標題[問題] 如何取得一個object的大小?
時間Thu Jun 11 06:52:04 2015
我在用NIO的SocketChannel的時候碰到一個問題,
就是當Server端接受一個Client之後,
理論上我要attach一塊ByteBuffer給該channel。
問題是我從Client那邊傳過來的其實是一個自訂的Object,
(那是一個自訂的Class,先轉成ByteArray後在轉成ByteBuffer)
所以我在Server這邊不知道該allocate多大的sizs囧
以前我在寫C的時候,只要使用sizeof就可以搞定了,
可是在Java上面似乎沒有這個功能,可以請問一下各位前輩該怎麼辦嗎0rz
--
There is no secret behind the source code.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.181.136.182
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1433976728.A.630.html
1F:→ ssccg: 可以用sizeof的話大小本來就是確定的吧,算一下不就知道 06/11 09:22
2F:→ popcorny: 變成ByteArray不就有Lenght了嗎,然後先傳len再傳data 06/11 09:24
3F:→ RouterHsieh: 樓上的前輩意思是說,Object的大小 06/11 11:02
4F:→ RouterHsieh: 其實就是它轉成ByteArray後的size嗎@@ 06/11 11:02
5F:→ Killercat: 其實你的問題是serialize/deserialize怎麼傳type 06/11 12:42
6F:→ Killercat: 這很多方法可以做到,不過我不太確定你想要的是這個 06/11 12:42
7F:→ Chikei: 轉個方向想,如果你用C要收不定長度的資料要怎麼收?一樣 06/11 15:22
8F:→ Chikei: 下去搞就好了 06/11 15:23
9F:→ ctrlbreak: 自訂protocol就可以了 06/11 19:54
10F:→ Killercat: 其實很多現成的方法可以用 java自己的serialize 06/11 21:46
11F:→ Killercat: 或者轉json 不過最常見的還是google的protocal buffer 06/11 21:46