为什么我不能将数组存储在另一个数组中?

Why can't I store arrays inside another array?

我从一开始就用 C++ 编写代码,但现在一直在 Java 从事与网络管理相关的项目。这里 a[i].addresses returns 一个 NetworkInterfaceAddress[] (即数组)。但是当我尝试像这样复制时,它给出了一个错误。

NetworkInterface[] a;  
a=JpcapCaptor.getDeviceList();  
NetworkInterfaceAddress[] b=new NetworkInterfaceAddress[a.length];  
int i=-1;  
while(++i<a.length)  
b[i]=a[i].addresses;  

这给出了一个错误:

incompatible types: NetworkInterfaceAddress[] cannot be converted to NetworkInterfaceAddress.

数组b是一个NetworkInterfaceAddress数组,也就是说它可以存储objects类型NetworkInterfaceAddress。但是,正如您所说,a[i].addresses returns NetworkInterfaceAddressarray 所以,b 应该能够存储 arrays 类型 NetworkInterfaceAddress 而不是 objects 类型 NetworkInterfaceAddress。为此,b 应该是一个数组数组一个锯齿状数组。将 b 的定义更改为

NetworkInterfaceAddress[][] b = new NetworkInterfaceAddress[a.length][];

然后,在数组中添加a[i].addresses的同时,将b中必须保持a[i].addresses的当前数组的长度分配给a[i].length

while(++i<a.length){
    b[i] = new NetworkInterfaceAddress[a[i].addresses.length];
    b[i] = a[i].addresses; //b[i] is an array itself
}