0
我知道这是一个常见问题,我已经阅读了一些帖子,但找不到错误的根本原因。当数组列表中的对象数量较多时,接收错误(IndexOutOfBoundsException)
我有设备从json文件中获取参数,代码为这些设备生成拓扑。 我有一个微微网列表(小主从组),问题是代码工作得很好,最多可达45个设备。当我增加设备的数量时,我得到下面的错误;
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at KTHBleMesh.BleMeshDevice.construct(BleMeshDevice.java:508)
at KTHBleMesh.BleMeshDevice$2.run(BleMeshDevice.java:468)
at KTHBleMesh.Event.run(l2.java:21)
at KTHBleMesh.Simulator.doAllEvents(l2.java:50)
at KTHBleMesh.IteratorEngine.main(IteratorEngine.java:85)
并且弹出的位置是;
List<BleMeshDevice> neighboringDevices =this.getTxManager().getNeighbouringDevices(this);
for (BleMeshDevice neighDevice : neighboringDevices) {
if (neighDevice.devMiddleware.getTopologyCtrlBlock().getDevPiconet().get(0).getDevRole()==1)
` getDevPiconet()得到(0)给该错误,这里是类代码,
public BleMeshTopologyCtrlBlock() {
devPiconet = new ArrayList<BleMeshDevicePiconet>(2);
private void AddMastertoSlave(BleMeshDevice linkMaster,
BleMeshDevice linkSlave, int devRole) {
devPiconet.add(new BleMeshDevicePiconet(devRole, linkSlave));
devPiconet.get(devPiconet.size() -1).getDevSlaves().add(linkMaster);
for (BleMeshDevGatewayTable aRow : getDevPiconet().get(0)
.getGatewaytable()) {
if (aRow.getPicRemoteMaster().equals(aNeighPiconetMaster)
&& aRow.getPicLocalGatewayDev().getDevMiddleware()
.getTopologyCtrlBlock().getCapacity() > 0
&& aRow.getPicRemoteGatewayDev().getDevMiddleware()
.getTopologyCtrlBlock().getCapacity() > 0
看起来它失败,因为DevPiconet是空的,但它适用于其他设备数量...我不明白为什么它的设备数量增加时无法正常工作。
请让我知道如果您有任何线索或建议,
由于提前,
BR
所以如果你有46级或更多的设备你的错误的详细信息? 'BleMeshTopologyCtrlBlock'的构造函数代码中没有错误吗?我看不到'{'在下一个方法之前关闭 – XtremeBaumer
是的,我在45个设备后出现错误。构造函数拥有最后一个构造函数 –
你可以发布你的项目的完整代码吗? – XtremeBaumer