如何引用数组的一部分?

给定一个对象byte[],当我们要使用该对象进行操作时,通常需要其中的一部分。在我的特定示例中,我byte[]从线路获取信息,其中前4个字节描述了消息的长度,然后另外4个字节描述了消息的类型(一个映射到具体protobuf类的整数),然后剩下的byte[]就是消息的实际内容……像这样

length|type|content

为了解析此消息,我必须将内容部分传递给知道如何从中解析实例的特定类...问题是通常没有提供任何方法,以便您可以指定解析器应从何处读取内容。大批...

所以我们最终要做的是复制该数组的其余块,这是无效的...

据我在Java中所知,不可能创建另一个byte[]引用,该引用实际上只引用一些byte[]只有2个索引的原始较大数组(这是使用String的方法导致内存泄漏)...

我想知道我们如何解决这种情况?我想放弃protobuf只是因为它没有提供一些parseFrom(byte[], int, int)没有意义的东西... protobuf只是一个例子,任何东西都可能缺少该api ...

那么这是否迫使我们编写效率低下的代码,或者有什么可以做的?(从添加该方法可知)

帕维尔·乌瓦洛夫(Pavel Uvarov)

在Java中,数组不仅仅是内存的一部分-它是一个对象,具有一些其他字段(至少-长度)。因此,您不能链接到数组的一部分-您应该:

  • 使用阵列复制功能或
  • 实现并使用一些仅使用字节数组一部分的算法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章