-2
class blabla extends JPanel
{
    public blabla()
    {
    //code
    }
}

class Main
{
    public static void main(String[] args)
    {
        JPanel b;
        ArrayList<blabla> c;

        blabla a = new blabla();

        b = new JPanel();
        c = new ArrayList<blabla>();

        b.add(a);
        c.add(a);

        blabla d = (blabla) b.getComponent(0);
        System.out.println(c.indexOf(d));
     }
}

ArrayList aJPanel a相同的对象吗?代码输出应该是什么?

4

2 回答 2

3

该答案基于您在未提供代码片段且问题为...时在问题中提到的内容。

我创建了一个组件实例,将其绘制到屏幕上,并将其添加到 ArrayList。我通过使用它的孩子(getParent()方法)引用绘制的来访问它。但是,当我将此引用传递给 ArrayLists indexOf(); 方法,它返回-1。我想这意味着该组件在 ArrayList 中不存在。这是应该发生的事情,还是我可能在我的程序中搞砸了?我没有为您提供 SSCCE,也没有要求您进行任何编码,只是为了告诉我这是否是正常的 Java 行为......

这是我的回应

的javadocindexOf()说...

返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i,如果没有这样的索引,则返回 -1。

如您所见,这取决于equals()您的组件的实现。检查您的实现,因为它拥有从列表中检索值的关键。

于 2012-09-01T15:59:26.467 回答
0

好的,这里是您修改后问题的答案...

ArrayList a 和 JPanel 是同一个对象吗?

不,但它们包含相同的 class 对象blabla

代码输出应该是什么?

输出是

0

当您在 and 中放置相同的组件时,这是正确的JPanelArrayList并且0是元素的索引。

于 2012-09-01T16:18:53.470 回答