[問題] 如何取得一個object的大小?

作者: RouterHsieh (醉臥美人膝,醒掌天下權)   2015-06-11 06:52:04
我在用NIO的SocketChannel的時候碰到一個問題,
就是當Server端接受一個Client之後,
理論上我要attach一塊ByteBuffer給該channel。
問題是我從Client那邊傳過來的其實是一個自訂的Object,
(那是一個自訂的Class,先轉成ByteArray後在轉成ByteBuffer)
所以我在Server這邊不知道該allocate多大的sizs囧
以前我在寫C的時候,只要使用sizeof就可以搞定了,
可是在Java上面似乎沒有這個功能,可以請問一下各位前輩該怎麼辦嗎0rz
作者: ssccg (23)   2015-06-11 09:22:00
可以用sizeof的話大小本來就是確定的吧,算一下不就知道
作者: popcorny (畢業了..@@")   2015-06-11 09:24:00
變成ByteArray不就有Lenght了嗎,然後先傳len再傳data
作者: RouterHsieh (醉臥美人膝,醒掌天下權)   2015-06-11 11:02:00
樓上的前輩意思是說,Object的大小其實就是它轉成ByteArray後的size嗎@@
作者: Killercat (殺人貓™)   2015-06-11 12:42:00
其實你的問題是serialize/deserialize怎麼傳type這很多方法可以做到,不過我不太確定你想要的是這個
作者: Chikei ( )   2015-06-11 15:22:00
轉個方向想,如果你用C要收不定長度的資料要怎麼收?一樣下去搞就好了
作者: ctrlbreak   2015-06-11 19:54:00
自訂protocol就可以了
作者: Killercat (殺人貓™)   2015-06-11 21:46:00
其實很多現成的方法可以用 java自己的serialize或者轉json 不過最常見的還是google的protocal buffer

Links booklink

Contact Us: admin [ a t ] ucptt.com