无法获取Object [],java

时间:2013-11-21 11:23:59

标签: java arrays eclipse

我有这段代码:

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());
                    }
                }
            }

任何帮助?

更新

这是我打印所有cellsgraph.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

3 个答案:

答案 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 它实际上比内存地址复杂得多,但我们可以认为