MisterChangRay / magic-byte

a java tool for faster convertor byte2object
BSD 3-Clause "New" or "Revised" License
49 stars 20 forks source link

二进制数据长度小于一个 MagicClass 所有属性的长度的时候,数据读取完了还会继续反序列化 #63

Closed FULaBUla closed 2 months ago

FULaBUla commented 2 months ago

如果我一个 MagicClass 类里的属性是 4 个 Integer,然后反序列化 MagicByte.pack 传入的数据只有 4 字节,理论上反序列化的时候读完这四个字节就应该停止了,但是还是会继续后面的 3 个属性的反序列化。我发现这个问题的时候是我在后面的属性里写了 custom convert,因为我想先只反序列化前几个属性,所以把数据截取了前面几个属性对应的二进制数据的长度进行的反序列化,然后实际运行的时候就发现后面属性的 custom convert 的方法被执行了才发现这个问题。

MisterChangRay commented 2 months ago

因为框架带有默认值机制,所以后序的字段也会执行反序列化操作的

FULaBUla commented 2 months ago

因为框架带有默认值机制,所以后序的字段也会执行反序列化操作的

但是这个时候也会调用 custom convert,目前我只希望反序列化到数据读完就停止,剩下的用默认值或者 null,否则调用 custom convert 我的检查会不过,因为收到的数据为 0