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

看板java作者 (醉臥美人膝,醒掌天下權)時間10年前 (2015/06/11 06:52), 編輯推噓0(0011)
留言11則, 6人參與, 最新討論串1/2 (看更多)
我在用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://www.ptt.cc/bbs/java/M.1433976728.A.630.html

06/11 09:22, , 1F
可以用sizeof的話大小本來就是確定的吧,算一下不就知道
06/11 09:22, 1F

06/11 09:24, , 2F
變成ByteArray不就有Lenght了嗎,然後先傳len再傳data
06/11 09:24, 2F

06/11 11:02, , 3F
樓上的前輩意思是說,Object的大小
06/11 11:02, 3F

06/11 11:02, , 4F
其實就是它轉成ByteArray後的size嗎@@
06/11 11:02, 4F

06/11 12:42, , 5F
其實你的問題是serialize/deserialize怎麼傳type
06/11 12:42, 5F

06/11 12:42, , 6F
這很多方法可以做到,不過我不太確定你想要的是這個
06/11 12:42, 6F

06/11 15:22, , 7F
轉個方向想,如果你用C要收不定長度的資料要怎麼收?一樣
06/11 15:22, 7F

06/11 15:23, , 8F
下去搞就好了
06/11 15:23, 8F

06/11 19:54, , 9F
自訂protocol就可以了
06/11 19:54, 9F

06/11 21:46, , 10F
其實很多現成的方法可以用 java自己的serialize
06/11 21:46, 10F

06/11 21:46, , 11F
或者轉json 不過最常見的還是google的protocal buffer
06/11 21:46, 11F
文章代碼(AID): #1LUB-OOm (java)
文章代碼(AID): #1LUB-OOm (java)