【发布时间】:2019-12-16 11:29:32
【问题描述】:
根据 javadocs,DatagramPacket 类中的构造函数需要一个字节数组和一个小于或等于该数组长度的整数。 例如:
DatagramPacket(byte[] buf, int length)
我看到的所有例子都只是像这样传递字节数组的长度属性:
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
对于这个(常见的)用例,在构造函数中访问传递的字节数组的长度属性会更简单。为什么所有构造函数都明确需要长度参数?
【问题讨论】:
-
如果要使用的长度小于数组长度。
-
也许用户希望重用一个缓冲区对象,即使缓冲区的长度可能会改变。想象一下发送一个缓冲区长度为 1,000 的文件。几乎可以肯定的是,最后发送的数据包长度小于 1,000。