我有这段代码:
Object[] cells = null;
for (Station s : allStationOfOneGraph) {
System.out.println("NEXT");
for (Station s1 : allStationOfOneGraph) {
cells = graph.getEdgesBetween(s, s1);
System.out.println(cells); //**This works fine and give me a lot of information**
System.out.println(cells.length);//**This gives me 0** !!!!
for (Object cell : cells) {
//Here nothing works
Line l = (Line) cell;
System.out.println(l.getId());
}
}
}
任何帮助?
更新
这是我打印所有cells
(graph.getEdgesBetween
的输出)时的一些输出示例:
[Ljava.lang.Object;@d6f470
[Ljava.lang.Object;@49e998
[Ljava.lang.Object;@872770
[Ljava.lang.Object;@12e5985
[Ljava.lang.Object;@1f741ef
[Ljava.lang.Object;@9d1b1
[Ljava.lang.Object;@a5d627
[Ljava.lang.Object;@18ed438
[Ljava.lang.Object;@eb49d
[Ljava.lang.Object;@173c0e2
[Ljava.lang.Object;@7c70a5
[Ljava.lang.Object;@1c77b8e
[Ljava.lang.Object;@180d3a1
[Ljava.lang.Object;@c5fd22
[Ljava.lang.Object;@6dd711
[Ljava.lang.Object;@142a584
[Ljava.lang.Object;@808b17
[Ljava.lang.Object;@12badee
[Ljava.lang.Object;@a8171f
[Ljava.lang.Object;@186197d
[Ljava.lang.Object;@f3678e
[Ljava.lang.Object;@13c10c
[Ljava.lang.Object;@e72e28
[Ljava.lang.Object;@1876b89
[Ljava.lang.Object;@1a51f57
[Ljava.lang.Object;@1acbce3
[Ljava.lang.Object;@1a4f9b0
[Ljava.lang.Object;@4b795
[Ljava.lang.Object;@1b0cfa0
[Ljava.lang.Object;@10f4ec3
[Ljava.lang.Object;@1fc224c
[Ljava.lang.Object;@2fdac2
[Ljava.lang.Object;@1c2f9ba
[Ljava.lang.Object;@1993ad5
[Ljava.lang.Object;@e58b49
[Ljava.lang.Object;@1b6b35
[Ljava.lang.Object;@1b97eb
[Ljava.lang.Object;@192e83b
[Ljava.lang.Object;@1ccb2b7
[Ljava.lang.Object;@1e9178f
[Ljava.lang.Object;@9c6e2
[Ljava.lang.Object;@1e03f3f
[Ljava.lang.Object;@1587c88
[Ljava.lang.Object;@57c87c
[Ljava.lang.Object;@12b66eb
答案 0 :(得分:3)
检查graph.getEdgesBetween(s,s1);这可能是返回空对象[],因此返回System.out.println(cells.length);得到0因此循环没有被执行,你没有得到任何东西
for (Object cell : cells) {
//Here nothing works
Line l = (Line) cell;
System.out.println(l.getId());
}
}
}
答案 1 :(得分:2)
Object[]
未定义任何用户友好的toString
方法。打印出cells
变量时,我很确定您会收到[Ljava.lang.Object;@2bbd86
这并不能保证您的数组包含数据。
例如,代码:
System.out.println(new Object[]{});
将打印:
[Ljava.lang.Object;@2bbd86
但是数组是空的。
即使数组不为空,您也可以获得与之前相同的输出。 例如:
System.out.println(new Object[]{new Object(), new Object()});
将打印
[Ljava.lang.Object;@2bbd86
你得到很多行的事实只是因为你的for循环:
for (Station s1 : allStationOfOneGraph)
答案 2 :(得分:1)
您的单元格输出意味着与您认为的意思不同的东西
[Ljava.lang.Object;@d6f470
[Ljava.lang.Object;@49e998
[Ljava.lang.Object;@872770
[Ljava.lang.Object;@12e5985
[Ljava.lang.Object;@1f741ef
这些中的每一个都意味着;这是[Ljava.lang.Object(数组的名称)类型的对象,它位于内存地址@ d6f470 1 。 它没有说明数组的大小。
System.out.println(cells.length);//**This gives me 0** !!!!
另一方面,这一行告诉你数组的大小,即零。现在数组仍然存在,它不是null,但它的大小为零。因此,当你迭代它时,你得到0个元素。
为什么它的零包含在代码的其他地方。
1 它实际上比内存地址复杂得多,但我们可以认为