为什么我不能将数组存储在另一个数组中?
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 NetworkInterfaceAddress
的 array 所以,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
}
我从一开始就用 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 NetworkInterfaceAddress
的 array 所以,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
}