作者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/cn.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